通过复制创建对象数组

时间:2019-01-03 23:41:15

标签: javascript arrays typescript redux

编写一个函数,该函数接受以下输入,并通过增加其id来复制对象,从而返回对象数组(长度为10);

对于输出[0],可见对象必须为true;对于剩余的对象,可见对象必须为false。

   input:
   {   id: 0,
        visible: true,
        width: 200 ;
        height: 200;
   }

   output:
   [ {   id: 0,
        visible: true,
        width: 200 ;
        height: 200;
    },
    {   id: 1,
        visible: false,
        width: 200 ;
        height: 200;
    },{   id: 2,
        visible: false,
        width: 200 ;
        height: 200;
    },{   id: 3,
        visible: false,
        width: 200 ;
        height: 200;
    },.
     .
     .
     .
   {   id: 9,
        visible: false,
        width: 200 ;
        height: 200;
    }]

3 个答案:

答案 0 :(得分:2)

您可以创建一个10个元素的数组,并用0(或其他任何东西,填充只能启用迭代)填充,然后在其上map填充并返回输入的副本,其中包含所需的id每次迭代:

编辑:已更新,其中包含visible的逻辑(在第一篇文章中省略)

const input = { id: 0, visible: true, width: 200, height: 200 };

const output = Array(10).fill(0).map((x, id) => ({...input, visible: id === 0, id}));

console.log(output)

答案 1 :(得分:0)

这是我的草案,但是,如果您想得到一个好的答案,还需要在要求我们花时间为您做所有事情之前,向我们展示您尝试过的内容以及陷入困境的地方。

const mock = {
    id: 0,
    visible: true,
    width: 200,
    height: 200
}

let mockArr = [];

for (i = 0; i <= 10; i++) {
    mockArr.push({
        ...mock,
        visible: i === 0,
        id: i
    })
}
console.log(mockArr)

答案 2 :(得分:0)

我的建议...

let input = { id: 0, visible: true,  width: 200, height: 200 }

let output = [];

for (let i=0; i<10; i++) {
  output.push( Object.assign({}, input, { id: i, visible:(i===0) }) )
}
	
console.log(output);