0

这是如何在数组中搜索值的存在:

words = ["rattled", "roudy", "rebbles", "ranks"]
alert "Stop wagging me" if "ranks" in words

我在寻找具有指定属性值的对象存在时寻找类似的优雅:

words = [
  { id: 1, value: "rattled" },
  { id: 2, value: "roudy" },
  { id: 3, value: "rebbles" },
  { id: 4, value: "ranks" }
]
alert "Stop wagging me" if "ranks" in words.value

但是底部的线不起作用。

4

2 回答 2

1

我刚刚尝试了以下操作,它对我有用:

alert "Stop wagging me" if "ranks" in (word.value for word in words)
于 2013-03-12T13:51:12.363 回答
1

如果您想要 1-liner,您可以执行以下操作:

alert "Stop wagging me" if do -> return yes for w in words when w.value is 'ranks'

优点是它将在数组中迭代而不是派生一个新数组(内存效率高),并且一旦找到匹配项就会停止迭代(cpu 效率高)。要付出的代价是它的可读性可能有点差。为了解决这个问题,最好的方法可能是制作自己的效用函数:

inObjectMember = (obj, key, value) ->
  for o in obj when o[key] is value
    return yes

alert "Stop wagging me" if inObjectMember words, 'value', 'ranks'
于 2013-03-12T15:56:21.770 回答