javascript 项为空时调用Array.find失败

pu3pd22g  于 2023-03-16  发布在  Java
关注(0)|答案(4)|浏览(202)

我有一个类似的问题,这个用户在这里:Find object by id in an array of JavaScript objects
我想在数组ob对象中按ID查找一个对象。在MDN中有一个使用Array.find()的例子。
我的问题是,对象可以为空。下面是一个例子:

var myArray = [
 {id:1, name:"bob"},
 {id:2, name:"dan"},
 {},
]

// grab the Array item which matchs the id "6"
var item = myArray.find(item => item.id === 6);

// print
console.log(item.name);

数组中的第三个对象由于某些错误而为空。因此,该项为空,因此item.id失败。我如何防止这种情况?

vbopmzt1

vbopmzt11#

不确定我是否理解正确,你是说如果有一个空对象而不是{},它在这种情况下失败,如果是这样,那么你可以在你的条件下使用null safe operator,比如i=> i?.id

var myArray = [
 {id:1, name:"bob"},
 {id:2, name:"dan"},
 {},
]

// grab the Array item which matchs the id "6"
var item = myArray.find(i => i.id === 6);

// print
console.log("When item is empty object",item?.name);
var myArray = [
 {id:1, name:"bob"},
 {id:2, name:"dan"},
 null,
]
// grab the Array item which matchs the id "6"
var item2 = myArray.find(item => item?.id === 6);
console.log("When item is null",item?.name);
e37o9pze

e37o9pze2#

请使用可选链接(?.)
https://stackoverflow.com/a/63498539/10562084

var myArray = [
 {id:1, name:"bob"},
 {id:2, name:"dan"},
 {},
 null,
]

// grab the Array item which matchs the id "6"
var item = myArray.find(item => item?.id === 6);

// print
console.log(item?.name);
7dl7o3gd

7dl7o3gd3#

在记录item.name之前,必须检查该项目是否存在。

// print
 if (item) {
   console.log(item.name);
 } else {
   console.log('No item was found');
 }
ttcibm8c

ttcibm8c4#

这里,是你的问题的简单解决方案。

var myArray = [
     {id:1, name:"bob"},
     {id:2, name:"dan"},
     {},
    ];

//在数组中查找

var item = myArray.find(item => {if(item.id) { return item.id === 2}});

//日志名称

console.log(item?.name);

相关问题