CoffeeScript:搜索具有特定属性值的对象

时间:2013-03-12 13:39:43

标签: coffeescript

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

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

但是底部的线不起作用。

2 个答案:

答案 0 :(得分:1)

我只是试着跟随它,它对我有用:

alert "Stop wagging me" if "ranks" in (word.value for word in words)

答案 1 :(得分:1)

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

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

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

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

alert "Stop wagging me" if inObjectMember words, 'value', 'ranks'
相关问题