js怎么快速创建这样一个数组?

aeeee
  • 847
            var fs_qsw = [{number:0},{number:1},{number:2},{number:3},{number:4},{number:5},{number:6},{number:7},{number:8},{number:9}];
 现在是手写的,有没有函数生成的办法?       
回复
阅读 9.6k
5 个回答
不爱吃西红柿的鱼
  • 8.2k
✓ 已被采纳

Array.fill

Array(10).fill('naive').map((v, i) =>{ return {number: i}});

Array.from

Array.from(new Array(10), (v,i) => { return {number: i}});

递归

(function wallace (i) { return (i < 0) ? [] : wallace(i - 1).concat({number: i}); })(10);

尾递归

(function mistake (i, acc) { return (i < 10) ? mistake(i + 1, acc.concat({number: i})) : acc; })(0, []);

Generator

function* angry(i) {
  yield {number: i};
  if (i < 10) { yield* angry(i + 1); }
};
Array.from(angry(0));

apply方式

Array.apply(null, { length: 10 }).map((v, i) => i);
function func(length) {
    var arr = [];
    for (var i = 0; i < length; i++) {
        arr.push({
            number: i
        });
    }
    return arr;
}

直接循环不行?

var arr=[];
for(var i=0;i<10;i++){
    arr.push({name:i})
}
function createArr(count){
    var arr = [];
    for (var i = 0; i < count; i++) {
        var temp = {number:i};
        arr.push(temp);
    }
    return arr
}

效果

a=[]
range(0,9).forEach(v=> this.a.push({number:v});
宣传栏