1、错误展示
const arr1 = [17];
const arr2 = [
{ id: 17, status: 0 },
{ id: 19, status: 1 },
]
const arr3 = arr1.map(item => {
return arr2.filter(ele => {
console.log(ele,item)
ele.id === item
})
})
const arr4 = arr2.filter((ele) => {
ele.id === 17;
})
console.log("arr3", arr3)
console.log("arr4", arr4)
分析:使用 filter 遍历数组后应该返回 arr2 中符合条件的对象,但打印出来 arr3 与 arr4 的值都为空数组
输出:打印出来 arr3 与 arr4 的数据都为空数组
2、原因
是因为没有正确地使用 return
关键字,在 JavaScript 中,如果箭头函数体内有大括号 {}
,则需要使用 return
明确返回一个值。否则,箭头函数将不会返回任何值,导致结果为空。
3、解决
使用 {} 的函数体内添加 return 关键字让函数有个返回值
<script>
const arr1 = [17]
const arr2 = [
{ id: 17, status: 0 },
{ id: 19, status: 1 },
]
const arr3 = arr1.flatMap((item) => {
return arr2.filter((ele) => ele.id === item);
})
console.log("arr3", arr3)
const arr4 = arr2.filter((ele) => {
return ele.id === 17
})
console.log("arr4", arr4)
</script>
输出: