Besoin de filtrer un tableau basé sur un autre tableau. Y a-t-il une fonction util dans KO? sinon j'ai besoin d'aller avec javascript
Premier :
var obj1 = [{
"visible": "true",
"id": 1
}, {
"visible": "true",
"id": 2
}, {
"visible": "true",
"id": 3
}, {
"Name": "Test3",
"id": 4
}];
Seconde :
var obj2 = [ 2,3]
Maintenant, je dois filtrer obj1 en fonction d'obj2 et renvoyer les éléments d'obj1 qui ne sont pas dans obj2 en omettant 2,3 dans les données ci-dessus (comparaison sur l'objet 1 Id )
sortie:
[{
"visible": "true",
"id": 1
}, {
"Name": "Test3",
"id": 4
}];
Vous pouvez simplement parcourir obj1
en utilisant filter
et utiliser indexOf
sur obj2
pour voir s'il existe. indexOf
renvoie -1
si la valeur ne figure pas dans le tableau et filter
inclut l'élément lorsque le rappel renvoie true
.
var arr = obj1.filter(function(item){
return obj2.indexOf(item.id) === -1;
});
Pour créer votre tableau en sortie, créez une fonction qui effectuera une itération dans obj1 et remplira un nouveau tableau en fonction de l'existence ou non de l'id de chaque obj de l'itération dans obj2.
var obj1 = [{
"visible": "true",
"id": 1
}, {
"visible": "true",
"id": 2
}, {
"visible": "true",
"id": 3
}, {
"Name": "Test3",
"id": 4
}];
var obj2 = [2,3]
var select = function(arr) {
var newArr = [];
obj1.forEach(function(obj) {
if obj2.indexOf(obj.id) !== -1 {
newArr.Push(obj)
};
};
return newArr;
};