J'essaie de filtrer un tableau JSON en utilisant les critères d'un autre tableau JSON que j'ai utilisé (filter).
Voici mon code :
function filterArray(object, criteria){
return object.filter(function(obj){
for(var i=0;i<criteria.length;i++){
let criteriaEle = criteria[i];
return Object.keys(criteriaEle).forEach(function(key){
if(obj[key] == criteriaEle[key]){
return obj;
}
})
}
})
}
Par exemple :
object = [{type:1,company:1,color:0,name:a},{type:2,company:1,color:0,name:b},{type:1,company:3,color:0,name:c},{type:4,company:1,color:0,name:d},{type:1,company:1,color:1,name:e}]
criteria = [{type:1,company:1,color:0},{type:1,company:1,color:1}]
Donc, si je donne ces deux tableaux à la fonction, elle doit renvoyer
obj = [{{type:1,company:1,color:0,name:a},{type:1,company:1,color:1,name:e}}]
Je ne sais pas trop où je me trompe. Merci de m'aider.
Mise à jour : Je ne veux pas non plus utiliser obj.type ou obj.company ou object.color comme paramètres de recherche car je veux que mon code soit facile à maintenir et je ne veux pas avoir à le mettre à jour plus tard si d'autres critères sont ajoutés.