我创建了一个“过滤器”函数,它接收一个对象数组。每个对象都有accountId
属性。我的函数应该过滤掉具有不同accountId
的对象。但是,它会在那里推送undefined
对象。
我的功能出了什么问题?
export const filterItems = (myArray, accountId) => {
let filteredItems = [];
filteredItems.push(myArray.find(items => items.accountId === accountId));
return filteredItems;
}
当我将accountId
传递给不在数组中的函数时,输出是一个数组,其中包含一个项目且项目未定义 - 请参阅下文:
[
0: undefined
]
我做错了什么?
答案 0 :(得分:3)
您的代码始终调用.push()。如果找不到该项,则.find()函数返回undefined。
您可以从.find()
获取返回值,然后仅在实际找到结果时推送结果:
let filteredItems = [];
let item = myArray.find(items => items.accountId === accountId);
if (item !== undefined)
filteredItems.push(item);
return filteredItems;
答案 1 :(得分:3)
myArray.find(items => items.accountId === accountId)
正在返回undefined
(并且正在推送到filteredItems
)
请改为尝试:
//...
let item = myArray.find(items => items.accountId === accountId);
if(item) {
filteredItems.push(item);
}
//...
答案 2 :(得分:3)
如果没有找到,你可以过滤数组并返回一个空数组。
export const filterItems = (myArray, accountId) =>
myArray.filter(items => items.accountId === accountId);