在JavaScript中,你可以使用不同的方法来生成你提到的数组。以下是两种不同的方法,分别生成 [1,1,1,2,2,2,3,3,3,4]
和 [1,2,3,1,2,3,1,2,3,1]
。
[1,1,1,2,2,2,3,3,3,4]
这个数组的特点是每个数字重复3次,最后一个数字只出现一次。你可以使用 Array.from
和 flatMap
来实现:
const result = Array.from({ length: 4 }, (_, i) =>
i === 3 ? [i + 1] : Array(3).fill(i + 1)
).flat();
console.log(result); // 输出: [1,1,1,2,2,2,3,3,3,4]
解释:
- Array.from({ length: 4 }, (_, i) => ...)
创建一个长度为4的数组,i
是索引。
- i === 3 ? [i + 1] : Array(3).fill(i + 1)
对于前3个索引,生成一个包含3个相同数字的数组,最后一个索引生成一个只包含一个数字的数组。
- flat()
将嵌套数组扁平化。
[1,2,3,1,2,3,1,2,3,1]
这个数组的特点是 1,2,3
重复3次,最后再加一个 1
。你可以使用 Array.from
和 map
来实现:
const result = Array.from({ length: 10 }, (_, i) => (i % 3) + 1);
console.log(result); // 输出: [1,2,3,1,2,3,1,2,3,1]
解释:
- Array.from({ length: 10 }, (_, i) => ...)
创建一个长度为10的数组,i
是索引。
- (i % 3) + 1
通过取模运算 i % 3
来生成 1,2,3
的循环。
[1,1,1,2,2,2,3,3,3,4]
,你可以使用 Array.from
和 flatMap
来生成。[1,2,3,1,2,3,1,2,3,1]
,你可以使用 Array.from
和 map
来生成。这两种方法都非常简洁且高效,适合处理类似的数组生成需求。