javascript – 如何使用lodash过滤对象数组的数据

var brands = [];
brands = [null, {
  "id": "1",
  "image": "/images/brands/surf_excel.png",
  "name": "Surf Excel",
  "productCount": "6"
}, {
  "id": "2",
  "image": "/images/brands/rin.png",
  "name": "Rin",
  "productCount": "5"
}, {
  "id": "3",
  "image": "/images/brands/ariel.png",
  "name": "Ariel",
  "productCount": "4"
}];

现在我想得到id = 3的名字.我试过了

var data = _.filter(brands, { 'id': 3 });
console.log(data.name);

但它的给定错误无法读取未定义的属性.假设id = 3只有一条记录,任何人都可以帮助我.如何从上面结构中的给定id获取名称.

如果有更好的方法来获得相同的结果,也值得赞赏.

解决方法:

正如您指定并使用它的_.filter()方法.您可以使用pass谓词,它可以是每次迭代将调用的函数.注意它会返回一个数组.

var data = _.filter(brands, function(brand){
   return brand != null && brand.id == 3;
});
console.log(data[0].name);

如果你只想要一个元素,请使用_.find()

var data = _.find(brands, function(brand){
   return brand != null && brand.id == 3;
});
console.log(data.name);
上一篇:javascript-在Lodash.js / Underscore.js中,如何为每个元素添加索引?


下一篇:javascript – 删除数组中重复字符串的最佳方法