如何使用javascript根据特定字段值查找json[]中是否存在对象

如何使用javascript根据特定字段值查找json[]中是否存在对象,javascript,node.js,meteor,Javascript,Node.js,Meteor,我有一个json对象作为 var arr=[{"id":"1","ref":"100"},{"id":"2","ref":"200"},{"id":"3","ref":"100"}] 现在我有了一个函数,这样一个新的json对象被传递到ex.{“id”:“4”,“ref”:“400”},然后我需要搜索arr[]是否有任何对象具有相同的ref。如果没有元素具有该ref,那么我需要推送到arr。如果没有,我们怎么做 var arr = []; var obj = {"id":"4","ref":"

我有一个json对象作为

var arr=[{"id":"1","ref":"100"},{"id":"2","ref":"200"},{"id":"3","ref":"100"}]
现在我有了一个函数,这样一个新的json对象被传递到ex.{“id”:“4”,“ref”:“400”},然后我需要搜索arr[]是否有任何对象具有相同的ref。如果没有元素具有该ref,那么我需要推送到arr。如果没有,我们怎么做

var arr = [];
var obj = {"id":"4","ref":"400"};
function(obj){
    if(!arr.contains(obj.ref)) //this didn't work
    {
        arr.push(obj);
    }
}
我们如何检查数组中是否存在具有相同ref的对象的这种情况。

您可以使用正确的回调

var arr=[{“id”:“1”,“ref”:“100”},{“id”:“2”,“ref”:“200”},{“id”:“3”,“ref”:“100”},
obj={“id”:“4”,“ref”:“400”};
如果(!arr.includes(o=>o.ref===obj.ref)){
方位推力(obj);
}
控制台日志(arr)
.as控制台包装{max height:100%!important;top:0;}
使用函数,该函数也可以在ES5中使用

var arr=[{“id”:“1”,“ref”:“100”},{“id”:“2”,“ref”:“200”},{“id”:“3”,“ref”:“100”}]
var obj1={“id”:“4”,“ref”:“400”};
var obj2={“id”:“5”,“ref”:“200”};
函数addSth(obj){
if(!arr.some(函数(el){return(el.ref==obj.ref)}))
{
方位推力(obj);
}
}
添加某物(obj1);
添加某事物(obj2);
console.log(arr)
试试这个。它会起作用的

var arr=[{“id”:“1”,“ref”:“100”},{“id”:“2”,“ref”:“200”},{“id”:“3”,“ref”:“100”}]

obj={“id”:“4”,“ref”:“100”}

var结果=0;
对于(var i=0;i
另一个的可能重复:给定数组仅包含2个具有相同参考的对象,即100。请注意,这是ES7功能,无法在某些@Nina上工作。这是有效的。但当对象被推入arr时,如果该对象的参考更新为已处理,我需要启动5分钟的计时器计数,我需要从arr中删除该对象。我们怎么做?@user7350714,你可以作为一个新问题,因为这个问题需要的信息比在其他问题的评论中可以询问和回答的信息要多。@NinaScholz还有一件事..我需要设置一个5分钟的时间间隔,一旦我们推送该对象,如果ref值被更新为processed,则在这个时间间隔内。我需要从arr中删除该对象。我们怎么做?参见函数.@barbasan在上面的例子中,如果在arr对象中已经存在一个具有相同ref的对象,那么如何从arr…slice中删除整个对象?有很多方法可以实现。看见
    var result = 0;
    for (var i = 0; i < arr.length; i++) {           
        if (arr[i].ref == obj.ref) {
            result = result + 1;
        }            
    }
    if (result == 0) {
        arr.push(obj);
    }