Ok, cela me dérange depuis un moment maintenant, donc toute aide serait grandement appréciée!
Question filtre:
Prenez le tableau suivant:
const retailCompanies = companies.filter(company => company.catagory === 'Retail');
Quand j'ai vu une fonction filter()
répertoriée comme:
const companies = [{name: "Company One", catagory: "Finance"}, {name: "Company Two", catagory: "Retail"}, {name: "Company Three", catagory:"Auto Shop"}];
cela m'a fait demander pourquoi company.catagory et non companies.catagory comme le suggère le texte du tableau parent? Cela peut sembler trivial, mais j'ai juste besoin de savoir où cela a changé et comment le code lit cela.
Te remercie!
3 Réponses :
company
est l'argument de rappel qui contient l'élément actuel, vous pouvez le nommer comme vous voulez, la plupart du temps, vous verrez les gens le nommer juste el
ou ils le détruisent comme ceci:
const retailCompanies = companies.filter(({ catagory }) => catagory === 'Retail');
company
détient l'élément actuel de la boucle, il ressemble à ceci:
{name: "Company One", catagory: "Finance"}
Et vous voulez comparer la catagory
propriété avec 'Retail'
de sorte que vous devez écrire
company.catagory === 'Retail'
Je ne pense pas que ce soit une fonction d'ordre supérieur, c'est une méthode intégrée de tableau.
La syntaxe du filtre est:
let newArray = arr.filter(callback(element[, index, [array]])[, thisArg])
Dans votre exemple, l' company
est l' element
de la syntaxe ci-dessus. Le filtre exécutera la fonction de rappel pour chacun des éléments du tableau donné jusqu'à la fin.
Source: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter
La fonction de filtrage reçoit un rappel qui est ensuite appelé dans une boucle en passant les valeurs individuelles du tableau.
Ainsi, chaque fois que votre rappel est exécuté, vous recevez un objet du tableau de votre entreprise comme {name: "Company One", catagory: "Finance"}
dans la première itération, {name: "Company Two", catagory: "Retail"}
dans la seconde itération et ainsi de suite.
Depuis que vous avez appelé votre company
objet company
vous utilisez company.category
pour accéder au champ de catégorie dans cet objet. Vous pouvez choisir de nommer l'argument de la fonction de rappel n'importe quoi, par exemple, item
Array.prototype.filter = function(callback) { const arr = this; const res = []; for(let i = 0; i < arr.length; i++) { if(callback(arr[i], i)) { // call the callback function with the ith item res.push(arr[i]); } } return res; }
Vous pouvez penser à une fonction de filtre implémentée comme
const retailCompanies = companies.filter(item => item.catagory === 'Retail');
companies
- le tableau qui contient toutes les entreprisescompany
- un élément du tableau. Puisque, la fonction sera appelée contre chaque membre, elle les couvrirait tous.Je vous suggère de changer le titre de votre question, ce n'est pas une fonction d'ordre supérieur.
considérez ce titre changé, merci