数组的空位指,数组的某一个位置没有任何值。 空位不是undefined,一个位置的值等于undefined,依然是有值的。
- Array构造
Array(100); //[undefined × 100]
[,1,,,,2]
- Array.prototype.copyWithin(target,start = 0,end = this.length) copyWithin()会连空位一起拷贝。 它接受三个参数。
target(必需):从该位置开始替换数据。
start(可选):从该位置开始读取数据,默认为0。如果为负值,表示倒数。
end(可选):到该位置前停止读取数据,默认等于数组长度。如果为负值,表示倒数。
//copyWithin()会连空位一起拷贝。
[,'a','b',,].copyWithin(2,0) // [,"a",,"a"]
- ES5:
forEach,filter,every,some都会跳过空位。
map会跳过空位,但是保留这个值。
join,toString会将空位视为undefined,而undefined和null会被处理成空字符串。
Array(100).join(",").split(",");
-
ES6 :明确的将空位转为undefined处理
-
数组API
Array.from({length:100});
Array.from(Array(100));
function * generator(i){
yield i;
if( i < 99 ){
yield * generator(i+1);
}
}
Array.from(generator(0));
Array.of(1, 2) // [1, 2]
Array.of.apply(null,Array(100));
Array(100).fill("1");
- 其他方式
[...Array(100)]
#思考题几种解法
ES5:
Object.keys(Array(101).toString());
ES6:
Array.from(Array(100).keys());
//或者
[...Array(100).keys()]