/*
如何不使用loop循环,创建一个长度为100的数组,并且每个元素的值等于它的下标
*/
var myArray;
myArray = null;
// new Array(100) 生成的是稀疏数组 返回的不是数组,需要 Array.from转换
/*
创建空数组
1.Array.from(new Array(100))
2.Array.from({length:100}
3.Array.apply(null,{length:100}
4.[...Array(100)]
*/
// 1
myArray = Array.from(new Array(100));
myArray = myArray.map(function(item, index) {
return index;
});
// 2
myArray = Array.apply(null, {
length: 100
});
// Object.keys(),该方法返回一个数组传入对象,返回属性名
// r如果传递数组,返回索引(下标)
myArray = Object.keys(myArray);
// 3
// 通过Array Iterator
myArray = Array.from(Array(100).keys());
// 4 其实就是 先去掉 undefined 还是 方法1的思想
myArray = Array(100).fill('naive').map(function(v, i) {
return i;
});
// 5
// new Int8Array(100) 是初始化都为 0 的数组 后面和方法2一样
myArray = Object.keys(new Int8Array(100));
// 上面返回的数组为string,要转成number
myArray = myArray.map(Number);
// 6 赌博法 页面至少要有100个字符
myArray = document.body.innerHTML.substr(0, 100).split('').map(Object.call, Number);
// 7
myArray = ' '.repeat(100).split('').map(Object.call, Number);
// 8 new Array(100).toString() 生成 一串,,,..,, 再分割 成数组
myArray = new Array(100).toString().split(",");
myArray = myArray.map(function(v, i) {
return i;
});
// 9
myArray = [...Array(100).keys()];
// 10 递归
function reduce(prev, curr) {
if (curr >= 100) return prev;
prev.push(curr);
return reduce(prev, curr + 1);
}
myArray = reduce([], 0);
网友评论