以下代码执行后,array 的结果是?
let array = [,1,,2,,3];
array = array.map((i) => ++i)
答案是:[1,2,1,3,1,4]
原因是map在进行遍历时,会跳过空位,但是会保留着undefined。
但是forEach(), filter(), reduce(), every() 和some()都会跳过空位,来看以下代码:
const array1 = [1, 2, ,3, ,];
array1.forEach(element => console.log(element));
// 1
// 2
// 3
console.log(array1.filter(element => (element>=2)));//[ 2, 3 ]
console.log(array1.reduce((x,y) => x+y));//6
console.log(array1.every(x => x>=2));//false
console.log(array1.some(x => x>=2));//true
join()和toString()会将空位视为undefined,而undefined和null会被处理成空字符串,代码所示:
console.log(array1.join('!'));//1,2,,3,
console.log(array1.toString());//1,2,,3,