我有很多对象要从中过滤掉重复项。当一个对象具有另一个对象中存在的属性 IMAGEURL
时,我想忽略该对象并继续前进。
我正在为此使用 nodeJS
,所以如果有一个库可以让我更轻松地让我知道。
我之前做过类似的实现,检查数组中的字符串值,做类似的事情:
var arr = ['foo', 'bar'];
if(arr.indexOf('foo') == -1){
arr.push('foo')
}
但这对对象不起作用,据我所知。我在这里有什么选择?更简单地说:
var obj1 = {IMAGEURL: 'http://whatever.com/1'};
var obj2 = {IMAGEURL: 'http://whatever.com/2'};
var obj3 = {IMAGEURL: 'http://whatever.com/1'};
var arr = [obj1, obj2, obj3];
var uniqueArr = [];
for (var i = 0; i<arr.length; i++){
// For all the iterations of 'uniqueArr', if uniqueArr[interation].IMAGEURL == arr[i].IMAGEURL, don't add arr[i] to uniqueArr
}
我该怎么做?
最佳答案
您可以只使用内部循环(通过使用 seen
变量来跟踪我们是否已经看到循环——您实际上可以在这里使用标签,但我发现变量方法是更易于阅读):
for (var i = 0; i<arr.length; i++){
var seen = false;
for(var j = 0; j != uniqueArr.length; ++j) {
if(uniqueArr[j].IMAGEURL == arr[i].IMAGEURL) seen = true;
}
if(!seen) uniqueArr.push(arr[i]);
}
关于javascript - 检查 Javascript 数组中是否存在属性值为 'x' 的对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18285084/