And*_*imm 20 javascript arrays repeat
在JavaScript中,如何以简洁的方式重复包含多个元素的数组?
在Ruby中,你可以做到
irb(main):001:0> ["a", "b", "c"] * 3
=> ["a", "b", "c", "a", "b", "c", "a", "b", "c"]
Run Code Online (Sandbox Code Playgroud)
我查了一下lodash库,没找到任何直接适用的东西.功能请求:重复数组.是一个将其添加到lodash的功能请求,以及给出的最佳解决方法
const arrayToRepeat = [1, 2, 3];
const numberOfRepeats = 3;
const repeatedArray = _.flatten(_.times(numberOfRepeats, _.constant(arrayToRepeat)));
Run Code Online (Sandbox Code Playgroud)
问题创建零填充JavaScript数组的最有效方法?并创建一个具有相同元素重复多次的数组,专注于多次重复单个元素,而我想重复一个具有多个元素的数组.
使用维护良好的库是可以接受的.
Cer*_*nce 16
不需要任何库,您可以使用它Array.from来创建您想要重复的数组数组,然后展平使用[].concat和传播:
const makeRepeated = (arr, repeats) =>
[].concat(...Array.from({ length: repeats }, () => arr));
console.log(makeRepeated([1, 2, 3], 2));Run Code Online (Sandbox Code Playgroud)
在较新的浏览器上,您可以使用Array.prototype.flat而不是[].concat(...:
const makeRepeated = (arr, repeats) =>
Array.from({ length: repeats }, () => arr).flat();
console.log(makeRepeated([1, 2, 3], 2));Run Code Online (Sandbox Code Playgroud)
ibr*_*rir 14
您可以使用Array构造函数及其fill方法将要重复的数组填充多次,然后将concat它们(子数组)填充到单个数组中:
const repeatedArray = [].concat(...Array(num).fill(arr));
Run Code Online (Sandbox Code Playgroud)
注意:在较旧的浏览器(ES6之前版本)上,您可以使用Function#apply模仿上面的其余语法(concat将作为参数传递给它的每个子数组调用):
var repeatedArray = [].concat.apply([], Array(num).fill(arr));
Run Code Online (Sandbox Code Playgroud)
例:
const arrayToRepeat = [1, 2, 3];
const numberOfRepeats = 3;
const repeatedArray = [].concat(...Array(numberOfRepeats).fill(arrayToRepeat));
console.log(repeatedArray);Run Code Online (Sandbox Code Playgroud)
递归替代:
const repeat = (a, n) => n-- ? a.concat(repeat(a, n)) : [];
console.log( repeat([1, 2], 3) )Run Code Online (Sandbox Code Playgroud)
我的第一个想法是创建这样的函数
let repeat = (array, numberOfTimes) => Array(numberOfTimes).fill(array).reduce((a, b) => [...a, ...b], [])
console.log(repeat(["a", "b", "c"], 3))Run Code Online (Sandbox Code Playgroud)
理想情况下,不是使用reduce,而是使用flatten, 但在浏览器中还没有支持
| 归档时间: |
|
| 查看次数: |
3936 次 |
| 最近记录: |