问题描述:在不使用循环的条件下,如何创建一个长度为100的数组,并且数组的每一个元素是该元素的下标?
方法一:传统的方法创建
var arr = new Array(100);
for(var i = 0;i< 100;i++){
arr[i] = i;
}
console.log( arr)
方法二:Object.keys()
这种方法一般真的很少有人用,如果不对此有研究的很难挖掘到,如果在面试当中碰到这样的题目,可能是一个加分项,但是一定要对此有深入的了解。在MDN中是这样描述的
**Object.keys()**
方法会返回一个由一个给定对象的自身可枚举属性组成的数组,数组中属性名的排列顺序和使用for...in
循环遍历该对象时返回的顺序一致 。
Object.keys(obj)
参数
obj 要返回其枚举自身属性的对象,返回值是一个表示给定对象的所有可枚举属性的字符串数组
Object.keys
返回一个所有元素为字符串的数组,其元素来自于从给定的object上面可直接枚举的属性。这些属性的顺序与手动遍历该对象属性时的一致。
let a = Object.keys(Array.apply(null,{length:100})).map(function(item){
return +item
});
console.log( a )
+号是一个转换格式的小技巧,你也可以使用parseInt
方法三:Array.from()
var arr = Array.from({length:100},(v,i)=>{i}).keys;
console.log( arr )
这里使用的Array.from()方法,从类数组或可迭代的对象创建一个新数组
方法四:Array.keys()
var arr = new Array(100).keys();
console.log( Array.from(arr) )
这里主要使用Array.keys()方法,获取数组的key值
方法五:Object.keys() 与 Array.from()
var arr = Object.keys(Array.from({length:100})).map((item)=>{return +item});
console.log( arr )
方法六:使用...扩展运算符
var arr = [...Array.from({length:100}).keys()];
console.log(arr);
网友评论