I have two lists of objects and I would like to filter my array1 without the file key that are in the array2 :
What I did :
array1 = array1.filter(function(n) {
for(var i=0; i < array2.length; i++){
if(n.file != array2[i].file){
return n;
}
}
});
This returns exactly the array1 whereas if I replace != with == it returns the objects I want to get rid of.
I don’t understand why.
https://jsfiddle.net/hrzzohnL/1/
So at the end I would like to end with this array :
[
{
"file": "tttt.csv",
"media": "tttt"
}
]
Advertisement
Answer
Your function doesn’t do what you want as it doesn’t return false for values you don’t want and true for those you want. Consider this:
array1 = array1.filter(function(n) {
for(var i=0; i < array2.length; i++){
if(n.file == array2[i].file){
return false;
}
}
return true;
});
Untested. That returns false once it find the element in array2 and otherwise if it wasn’t found returns true.