_.findWhere array-object within array-object 属性 equals something

_.findWhere array-object within array-object property equals something

我有一个这样的数组:

var colors = [
  {
    "name": "red",
    "ids":[
      {
        "id": 1
      }
    ]    
  },
  {
    "name": "blue",
    "ids":[
      {
        "id": 5
      }
    ]    
  }
]

我基本上想找到 ids 中的第一个 id 等于某物的对象。

_.findWhere(colors, {
  "ids.0.id": 1
})

这是解决问题的最佳方法吗?

var color = _.chain(colors)
.map(function(color){
  color.id = color.ids[0].id
  return color
})
.findWhere({
  "id": 1
})
.value()

console.log(color)

_.findWhere is just a convenience wrapper for _.find 所以如果 findWhere 不能完全满足您的需要,请直接转到 find 并手动完成:

var color = _(colors).find(function(color) {
    return color.ids[0].id === 1;
});