您可以使用原始 Array 连接到自身任意多次,甚至无需像这样更改原始数组:
array.concat(array).concat(array).concat(array)
// ["One", "Two", "Three", "Four", "One", "Two", "Three", "Four", "One", "Two", "Three", "Four", "One", "Two", "Three", "Four"]
此外,您可以使用一个函数来传递您希望数组重复的时间,这样您就不必处理所有那些concat 调用。
var arr = [1, 2, 3, 4];
function concatArray(array, times) {
var result = [], i = 0;
for ( ; i < times; i += 1) {
result = result.concat(array);
}
return result;
}
concatArray(arr, 3); // [1, 2, 3, 4, 1, 2, 3, 4, 1, 2, 3, 4]
最后,如果您想修改结果数组以包含一定数量的项目,或者过滤它们,或者映射它们,或者其他什么,您可以在您的函数中添加一个回调。
var arr = [1, 2, 3, 4];
function concatArray(array, times, cb) {
var result = [], i = 0;
for ( ; i < times; i += 1) {
result = result.concat(array);
}
if (cb && typeof cb == 'function') {
result = cb(result);
}
return result;
}
var final = concatArray(arr, 3, function(a) {
return a.slice(0, 10);
});
console.log(final) // [1, 2, 3, 4, 1, 2, 3, 4, 1, 2]