English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

Problèmes logiques courants en Javascript et solutions

一、统计数组 arr 中值等于 item 的元素出现的次数

function count(arr, item) {
   var count = 0;
   arr.forEach(function(e){
     //e为arr中的每一个元素,与item相等则count+1
     e == item ? count++ : 0;
   });
   return count;
 }
function count(arr, item) {
  return arr.filter(function(a){
    return (a==item);}}
  }).length
}
function count(arr, item) {
var res;
return (res = arr.toString().match(new RegExp("//"b"+item+"//b","g")))?res.length:0;
}
function count(arr, item) {
      var count = 0;
      arr.map(function(a) {
        if(a === item) {
          count++;
        }
      });
      return count;
    }

Deux, calculez le carré des éléments de l'array arr. Ne modifiez pas directement l'array arr, retournez un nouveau tableau

function square(arr) {
  return arr.map(function(item,index,array){
    return item*item;
  })
}
function square(arr) {
  //Déclarez un nouveau tableau pour stocker les résultats
   var a = [];
   arr.forEach(function(e){
     //Ajoutez chaque élément au carré de l'array a
     a.push(e*e);
   });
   return a;
 }
function square(arr) {
//Copiez un array arr
  var newarr = arr.slice(0);
  for (var i=0;i<newarr.length;i++){
    newarr[i]= newarr[i]* newarr[i];
  }
  return newarr;
}
function square(arr) {
  return arr.map(function(item){
    return Math.pow(item, 2);
  })
}

Trois, utilisez les éléments de l'array arr comme paramètres pour appeler la fonction fn

function argsAsArray(fn, arr) {
 return fn.apply(this, arr);
 }
function argsAsArray(fn, arr) {
  return function(para1,para2){ 
    return para1.apply(this,para2);
  }(fn,arr);
}

Quatre, achevez la fonction createModule, après l'appel, il doit répondre aux exigences suivantes :

     1retourne un objet

     2l'attribut greeting de l'objet égale à str1l'attribut name de l'objet égale à str2

     3dans l'objet, il existe une méthode sayIt qui renvoie une chaîne de caractères valeur de l'attribut greeting + ‘, ‘ +valeur de l'attribut name

function createModule(str1, str2) {
   var obj = {
     greeting : str1,
     name : str2,
     sayIt : function() {
       //les deux propriétés doivent être précédées de this
       return this.greeting+", "+this.name;
     }
   };
   return obj;
 }
//utilisation de la méthode constructeur
function createModule(str1, str2) {
  function Obj() {
    this.greeting = str1;
    this.name = str2;
    this.sayIt = function() {
      return this.greeting + ', ' + this.name;
    };
  }
  return new Obj();
}
//construction de constructeur et prototype
function createModule(str1, str2) {
  function CreateMod() {
    this.greeting = str1;
    this.name = str2;
  }
  CreateMod.prototype.sayIt = function() {
    return this.greeting + ', ' + this.name;
  }
  return new CreateMod();
}

Cinquièmement, connu sous le nom de fn une fonction prédéfinie, réalisez la fonction curryIt, après l'appel, il doit satisfaire les conditions suivantes :

      1retourne une fonction a, la propriété length de a est1(ce qui signifie que a reçoit explicitement un paramètre)

      2l'appel de a après, retourne une fonction b, la propriété length de b est 1

      3l'appel de b après, retourne une fonction c, la propriété length de c est 1

      4l'appel de c après, le résultat est identique au retour de fn

      5les paramètres de fn sont les arguments de l'appel de la fonction a, b, c

Exemple d'entrée:

var fn = function (a, b, c) {return a} + b + c}; curryIt(fn) (1) (2) (3);
function curryIt(fn) {
   //obtenez le nombre de paramètres de fn
   var n = fn.length;
   //déclarez un tableau args
   var args = [];
   //retournez une fonction anonyme
   return function(arg) {
     //mettez les paramètres dans les parenthèses après curryIt dans un tableau
     args.push(arg);
     //si le nombre de paramètres dans args est inférieur au nombre de paramètres de la fonction fn,
     //alors exécutez arguments.callee (qui a pour fonction d'indiquer la fonction en cours d'exécution, ici la fonction anonyme retournée).
     //sinon, retournez le résultat de l'appel de fn
     if (args.length < n) {
      return arguments.callee;
     sinon else return fn.apply("", args);
   }
 }
function curryIt(fn) {
  return function a(xa){
    return function b(xb){
      return function c(xc){
        return fn.call(this,xa,xb,xc);
      };
    };
  };
}

Six, afficher la position des éléments dans le tableau

function indexof(arr,item){
  for(var i = 0,len = arr.length;i<len;i++){
    var ite = arr[i];
    if(ite == item){
      console.log(ite == item);
      return i;
    }else{
      return -1;
    }
  }
}
function indexof(arr,item){
  return arr.indexOf(item);
}

Sept, somme des tableaux

function sum(arr) {
  return eval(arr.join("+"));
};

Huit, supprimer l'élément donné

  function remove(arr, item) {
    for(var i=0, m=arr.length, res=[]; i<m; i++){
      if(item === arr[i]) continue;
      else res.push(arr[i]);
    }
    return res;
  }
function remove(arr, item) {
  var newA=arr.slice(0);
  for(var i=newA.indexOf(item);i>-1;i=newA.indexOf(item)){
    newA.splice(i,1);
  }
  return newA;
}

Résumé

Les problèmes logiques courants en Javascript sont résumés ici, ne savez-vous pas si tout le monde a appris ? Le contenu de cet article est toujours utile pour l'apprentissage ou le travail des gens, et vous pouvez laisser des commentaires pour échanger si vous avez des doutes, merci de votre soutien au tutoriel d'alarme.

Vous pourriez aimer