下划线,检查对象数组中是否存在键

时间:2015-03-03 15:35:04

标签: angularjs underscore.js

我正在尝试检查我收到的针对我正在抓住的对象的新数据,我想要找出的是,如果他们发送的对象的键与我当前拥有的对象中的任何键匹配。

所以我抓住像

这样的对象
myObj = [{"one": 1}, {"two": 2 },{"three" : 3}];

我收到一个像

这样的对象
{"three" : 5 }

我想只是针对对象数组(myObj)检查这个对象,看看里面是否有“三”键(我不关心值,只是键匹配)所以我可以将它弹出一个if语句来分隔像 -

if( array of objects (myObj) has key from single object ( "three" ) ) {}

我正在使用下划线。谢谢!

编辑:抱歉这不清楚,我正在编辑它以澄清 -

我持有myObj(对象数组),并被发送一个对象 - 例如“三”,我只想拉出那个单个对象键(Object.keys(updatedObject)[0]并检查对象数组中的任何对象是否具有该密钥。

所以_has似乎只是为了检查一个对象,而不是一个对象数组。

2 个答案:

答案 0 :(得分:10)

您正在寻找_.some iterator与使用_.has的回调相结合:

if (_.some(myObj, function(o) { return _.has(o, "three"); })) {
    …
}

答案 1 :(得分:8)

您可以使用下划线方法'has'

这里的例子是:

_.has({"three" : 5 }, "three");
=> true

来自underscore doc

  

对象是否包含给定的密钥?相同   object.hasOwnProperty(key),但使用安全引用   hasOwnProperty函数,以防它被意外覆盖。