filter()方法过滤时如何保留假值?
# filter()方法过滤时如何保留假值?
场景:
假设有一个数组[0, , 1, "a"]
,如何过滤掉其中的空元素并且保留0、false、null等假值?
let arr = [0, false, null, undefined, , 1, "a"]
let newArr = arr.filter(ele => {
return ele
})
console.log(newArr); // [1,'a']
1
2
3
4
5
2
3
4
5
一般情况下filter()默认会将数组中非真值过滤。例如0、false、null、""、undefined、NaN。
我们可以通过判断数组元素ele
与arr[index]
是否相等的方式来过滤掉空元素并保留0、false等假值。具体如下:
let arr = [0, , false, null, undefined, 1, "a"]
let newArr = arr.filter((ele,index,arr) => {
return ele === arr[index]
})
console.log(arr) // [0, empty, false, null, undefined, 1, "a"]
console.log(newArr); // [0, false, null, undefined, 1, "a"]
1
2
3
4
5
6
2
3
4
5
6
在GitHub上编辑 (opens new window)
上次更新: 2/23/2022, 5:36:03 PM