【问题标题】:How to find an object key that contains a value within it's array?如何在其数组中找到包含值的对象键?
【发布时间】:2015-05-27 03:11:32
【问题描述】:

我有以下 Javascript (Coffeescript) 对象:

urlSets =
  a: [
    'url-a.com'
    'url-b.com'
    'url-c.com'
    ]
  b: [
    'url-d.com'
    'url-e.com' 
    'url-f.com'
    ]
  c: [
    'url-g.com'
  ]

鉴于我有 "url-a.com" 的值,我如何找到包含此 url 的 urlSetskey

我已经在使用underscore.js 库,我想我可能会使用_.findKey_.contains。我一直在玩这样的事情:

_.findKey urlSets, (key) ->
  return _.contains(key, "url-a.com")

……但没有运气。它返回TypeError: undefined is not a function

【问题讨论】:

  • 看起来不错。你确定下划线加载正确吗?

标签: javascript arrays coffeescript underscore.js javascript-objects


【解决方案1】:

我发现这种循环不使用任何特殊库更容易,尤其是在使用具有如此好的循环的咖啡脚本时。

foundKey = null

for key, urls of urlSets
  if 'url-a.com' in urls
    foundKey = key

console.log foundKey #=> a

它使用for key, value of object 循环轻松循环您的urlSets 对象,然后使用if item in array 包含检查哪个咖啡编译为indexOf 调用。

【讨论】:

  • ...除了总是枚举整个对象,并产生最后一次出现。 _findKey urlSets, (urls) -> 'url-a.com' in urls 可能确实更容易。
【解决方案2】:

您已经尝试使用...

 var obj = {a:1, b:2, c:3};

 for (var prop in obj) {
    console.log("o." + prop + " = " + obj[prop]);
 }

如果有用,请参阅:https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Statements/for...in

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2021-11-17
    • 1970-01-01
    • 2021-04-27
    • 2022-07-20
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2019-08-02
    相关资源
    最近更新 更多