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

ajm*_*jma 4 underscore.js angularjs

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

所以我抓住了像这样的物体

myObj = [{"one": 1}, {"two": 2 },{"three" : 3}];
Run Code Online (Sandbox Code Playgroud)

我收到一个像这样的对象

{"three" : 5 }
Run Code Online (Sandbox Code Playgroud)

我想只是针对对象数组(myObj)检查这个对象,看看里面是否有"三"键(我不关心值,只是键匹配)所以我可以弹出它成为一个if语句分开喜欢 -

if( array of objects (myObj) has key from single object ( "three" ) ) {}
Run Code Online (Sandbox Code Playgroud)

我使用下划线.谢谢!

编辑:对不起,这不清楚,我正在编辑它澄清 -

我抓住myObj(对象数组),并发送一个对象 - 例如"三",我只想拉出那个单个对象键(Object.keys(updatedObject)[0])并检查如果对象数组中的任何对象具有该键.

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

Ber*_*rgi 11

您正在寻找与使用以下内容的回调相结合的_.some迭代器_.has:

if (_.some(myObj, function(o) { return _.has(o, "three"); })) {
    …
}
Run Code Online (Sandbox Code Playgroud)


Gri*_*ead 8

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

这里的例子如下:

_.has({"three" : 5 }, "three");
=> true
Run Code Online (Sandbox Code Playgroud)

下划线文档:

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