在 JavaScript 中多次重复具有多个元素的数组 [英] Repeat an array with multiple elements multiple times in JavaScript
问题描述
在 JavaScript 中,如何以简洁的方式重复包含多个元素的数组?
In JavaScript, how can I repeat an array which contains multiple elements, in a concise manner?
在 Ruby 中,你可以这样做
In Ruby, you could do
irb(main):001:0> ["a", "b", "c"] * 3
=> ["a", "b", "c", "a", "b", "c", "a", "b", "c"]
我查找了 lodash 库,并没有找到任何直接适用的内容.Feature request: repeat arrays. 是将其添加到 lodash 的功能请求,并且是最好的鉴于有解决方法
I looked up the lodash library, and didn't find anything that was directly applicable. Feature request: repeat arrays. is a feature request for adding it to lodash, and the best workaround given there is
const arrayToRepeat = [1, 2, 3];
const numberOfRepeats = 3;
const repeatedArray = _.flatten(_.times(numberOfRepeats, _.constant(arrayToRepeat)));
问题 创建零的最有效方法填充 JavaScript 数组? 和 创建一个具有相同多次重复的元素专注于多次重复单个元素,而我想重复具有多个元素的数组.
The questions Most efficient way to create a zero filled JavaScript array? and Create an array with same element repeated multiple times focus on repeating just a single element multiple times, whereas I want to repeat an array which has multiple elements.
使用维护良好的库是可以接受的.
Using reasonably well-maintained libraries is acceptable.
推荐答案
不需要任何库,你可以使用 Array.from
创建一个你想要重复的数组,然后使用 flatten[].concat
并传播:
No need for any library, you can use Array.from
to create an array of arrays you want repeated, and then flatten using [].concat
and spread:
const makeRepeated = (arr, repeats) =>
[].concat(...Array.from({ length: repeats }, () => arr));
console.log(makeRepeated([1, 2, 3], 2));
在较新的浏览器上,您可以使用 Array.prototype.flat
而不是 [].concat(...
:
On newer browsers, you can use Array.prototype.flat
instead of [].concat(...
:
const makeRepeated = (arr, repeats) =>
Array.from({ length: repeats }, () => arr).flat();
console.log(makeRepeated([1, 2, 3], 2));
这篇关于在 JavaScript 中多次重复具有多个元素的数组的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!