多次重复数组的部分

时间:2015-11-05 03:51:23

标签: javascript arrays repeat

多次重复数组的各个部分并将元素放入另一个数组的最佳方法是什么?

例如,将每个项目转换为3次:

var array = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'] 

进入这个:

var array = ['Mon', 'Mon', 'Mon', 'Tue', 'Tue', 'Tue', etc...]

3 个答案:

答案 0 :(得分:2)

这是另一个使用for循环的替代方法(没有使用forEach作为一个答案),这篇文章显示for循环比forEach快 https://josephscott.org/archives/2014/10/javascript-performance-for-vs-foreach/

var array = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];
var newArray = [];
for (var i = 0; i < array.length; i++) {
    for (var j = 0; j < 3; j++) {
        newArray.push(array[i]);
    }
}

console.log(newArray);

http://jsfiddle.net/2r7nqqyt/

你现在有各种各样的选择。

答案 1 :(得分:1)

试试这个

var temp=[];

var array = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];

array.forEach(function(x){
   for(var i=0;i<3;i++)
     temp.push(x);
})
console.log(temp);

JSFIDDLE

答案 2 :(得分:0)

要聪明一点,你可以把两个原型方法连在一起......

var array = ['Mon', 'Tue', 'Wed', 'Thu', 'Fri', 'Sat', 'Sun'];


var newArr = array.map(function(day){return [day, day, day];}).reduce(function(a, b){return a.concat(b);});

http://jsfiddle.net/chrislewispac/argz7zro/

当然,如果你想慢一点,你只会这样做....

这里比较了三种方法:

使用原型方法,使用for循环,使用forEach。

http://jsperf.com/arr-prototype-vs-loops