【问题标题】:Underscore, check if key exists in array of objects下划线,检查对象数组中是否存在键
【发布时间】:2015-03-04 00:37:29
【问题描述】:

我正在尝试根据我持有的对象检查我收到的新数据,我想要找出的是我正在发送的对象的键是否与我当前拥有的对象中的任何键匹配。

所以我抓住了一个像

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

我收到了一个类似的对象

{"three" : 5 }

我只想对照对象数组(myObj)检查这个对象,看看里面是否有任何带有键“三”的东西(我不关心值,只关心键匹配)所以我可以将它弹出到 if 语句中以分隔 like -

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

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

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

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

所以 _has 似乎只是用于检查单个对象,而不是对象数组。

【问题讨论】:

  • Google“javascript 检查对象中是否存在键”返回三个相关结果。
  • @SergiuParaschiv:根本不是重复的。它的underscore.js
  • 不是重复的,这是关于使用下划线,也许我们应该删除javascript标签以避免混淆
  • 除了 hasOwnProperty 之外,任何人都会使用其他任何东西的唯一原因是浏览器支持,对吧?

标签: angularjs underscore.js


【解决方案1】:

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

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

【讨论】:

    【解决方案2】:

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

    这里是例子:

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

    来自underscore doc

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

    【讨论】:

    • 这是在正确的轨道上 - 但是它没有检查对象数组是否有“三个”。
    猜你喜欢
    • 2012-05-28
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-09-26
    • 2020-07-11
    • 1970-01-01
    • 1970-01-01
    • 2020-06-18
    相关资源
    最近更新 更多