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

Javascript 如何使用lodash过滤对象数组的数据,javascript,filter,lodash,Javascript,Filter,Lodash,现在我想得到id=3的名称。我试过了 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的名称。我试过了

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只有一条记录,有人能帮我吗。如何从上述结构中的给定id获取名称


如果有更好的方法来获得同样的结果,我们也会很感激。

使用本机JavaScript方法

var品牌=[];
brands=[null{
“id”:“1”,
“图像”:“/images/brands/surf_excel.png”,
“名称”:“浏览Excel”,
“productCount”:“6”
}, {
“id”:“2”,
“image”:“/images/brands/rin.png”,
“姓名”:“Rin”,
“productCount”:“5”
}, {
“id”:“3”,
“image”:“/images/brands/ariel.png”,
“姓名”:“阿里尔”,
“productCount”:“4”
}];
var数据=品牌。查找(功能(v){
返回v&&v.id==“3”;
});
console.log(data.name),如您所指定,并使用它的
\uu.filter()
方法。您可以使用pass谓词,它可以是每次迭代都要调用的函数。请注意,它将返回一个数组

var data = _.filter(brands, { 'id': 3 });
console.log(data.name);
如果只需要一个元素,请使用


除了使用
filter()
而不是
find()
,您实际上已经非常接近了。没有看到任何结果的原因是,可以传递给
find()
/
filter()
的对象谓词执行严格的相等比较。意思是,
3===“3”
将计算为false。

IMO,如果OP询问的是
filter
,那么肯定有可能有多个元素询问了
id
@Rayon:那么他不会使用
数据。name
:)@Rayon:无论如何,我刚才还添加了filter方法:)
var data = _.filter(brands, function(brand){
   return brand != null && brand.id == 3;
});
console.log(data[0].name);
var data = _.find(brands, function(brand){
   return brand != null && brand.id == 3;
});
console.log(data.name);