Inspiré par la bibliothèque de traits de soulignement, travaillez dur pour réécrire la fonction appelante
P粉990008428
P粉990008428 2024-03-31 09:42:10
0
2
426

Je suis débutant et j'essaie de réécrire la fonction de soulignement_.invoke. J'essaie de créer la fonction pour qu'elle renvoie un tableau contenant les résultats de l'appel de la méthode sur chaque valeur de la collection.

_.invoke = function(collection, methodName) {
  var result = [];
  if (Array.isArray(collection)) {
    for (let i = 0; i < collection.length; i++) {
      methodName.call(collection[i])
      var value = collection[i][methodName]
      result.push(value)
    }
  }
  return result
}

Je pense que mon problème vient de cette ligne :

méthode sur

methodName.call(collection[i]) - 想调用对象 collection[i] mais je souhaite transmettre certains paramètres s'ils sont inclus dans le test unitaire.

Jusqu'à présent, j'ai essayé d'utiliser test: typeof(methodName) === "function" et d'écrire une fonction pour tester si la méthode est une fonction.

P粉990008428
P粉990008428

répondre à tous(2)
P粉165522886

Ici, vous pouvez appeler avec des paramètres.

_.invoke = function(collection, methodName, ...args) {
  if (!Array.isArray(collection)) {
     return [];
  }
  const out = []; 
  for(const item of collection){
    if(typeof item[methodName] === 'function')
      out.push(item[methodName].apply(item, args));
    }
  }
  return out;
}

Pour tester tous les projets il existe une méthode :

const collection = [...];
const allHaveMethod = _.invoke(collection, 'method', 'arg1', 'arg2').length === collection.length;
P粉413704245

C'est ce que tu veux dire ?

const myArr = [
  { cons:function(args) { return args } },
  { cons:function(args) { return args["bla"] } },
]

const _ = {};
_.invoke = (collection, methodName, ...args) => !Array.isArray(collection) ? [] : collection
.filter(item => typeof item[methodName] === 'function')
.map(item => item[methodName].apply(item, args));

const res = _.invoke(myArr,"cons",{"bla":"hello"})
console.log(res)
Derniers téléchargements
Plus>
effets Web
Code source du site Web
Matériel du site Web
Modèle frontal