如何在其数组中找到包含值的对象键?

How to find an object key that contains a value within it's array?

我有以下 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")

…但没有运气。它returns TypeError: undefined is not a function.

您已经尝试使用...

 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

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

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 调用。