2017-08-28 59 views
3

我有一个包含四个元素的数组,我想将它复制到另一个数组四次,并且通过连接四次完成它。将阵列N次复制到分层阵列

我的努力

let demoProperties = [] 
    .concat(fourDemoProperties) 
    .concat(fourDemoProperties) 
    .concat(fourDemoProperties) 
    .concat(fourDemoProperties); 

我也跟着另一个way(映射,减少),但这种方式迭代两次。

有没有任何最简单的方法复制N次?任何你的建议将不胜感激。

回答

4

您可以使用传播语法:

const demoProperties = [...fourDemoProperties, ...fourDemoProperties, ...fourDemoProperties, ...fourDemoProperties]; 

或者使用阵列#填充复制的数组,然后使用传播语法使用Array#CONCAT得到一个新的数组:

const fourDemoProperties = [1, 2, 3, 4]; 
 

 
const demoProperties = [].concat(...Array(4).fill(fourDemoProperties)); 
 

 
console.log(demoProperties);

注意:手册和Array#填充都是浅层克隆。如果项目是对象,则将克隆对象的引用,如果要更改其中一个对象,则“副本”也会更改。

例(检查浏览器的控制台):

const fourDemoProperties = [{ a: 1 }, { b: 2 }]; 
 

 
const demoProperties = [...fourDemoProperties, ...fourDemoProperties, ...fourDemoProperties, ...fourDemoProperties]; 
 

 
demoProperties[0].a = 5000; 
 

 
console.log(demoProperties);

1

如何你,如果你想保留的子阵列或无法跻身参考做到这一点依赖。

var ar = [1,2,3,4], 
 
    ars = Array.from({length:4}).map(_ => ar), 
 
    brs = Array.from({length:4}).map(_ => ar.slice()); 
 
console.log(ars); 
 
console.log(brs);