javascript - 检查 Javascript 数组中是否存在属性值为 'x' 的对象

标签 javascript arrays object for-loop

我有很多对象要从中过滤掉重复项。当一个对象具有另一个对象中存在的属性 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/

相关文章:

java - 数组的总和和平均值

c++ - '{' 标记错误之前的预期主表达式

arrays - Nodejs : How would I find a specific key value pair in a JSON object

javascript - 无法获取此条件语句以将列调整回来

javascript - 在 ChartJS 中 chop Canvas 标签,同时在工具提示中保留完整的标签值

tensorflow - 在tensorflow中定义的faster_rcnn_resnet101(就像层在哪里)在哪里

java - 需要为用户生成每个学生的卷号吗?

objective-c - ios使用对象返回一个函数并使用它

javascript - 使用 JS/jQuery 操作名称为数组的选项选择列表

javascript - jQuery - 如何在另一个范围内调用一个函数