插件窝 干货文章 JavaScript数组循环输出:如何更巧妙地生成[1,1,1,2,2,2,3,3,3,4]和[1,2,3,1,2,3,1,2,3,1]?

JavaScript数组循环输出:如何更巧妙地生成[1,1,1,2,2,2,3,3,3,4]和[1,2,3,1,2,3,1,2,3,1]?

数组 Array 生成 一个 645    来源:    2025-03-24

在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.fromflatMap 来实现:

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.frommap 来实现:

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.fromflatMap 来生成。
  • 对于 [1,2,3,1,2,3,1,2,3,1],你可以使用 Array.frommap 来生成。

这两种方法都非常简洁且高效,适合处理类似的数组生成需求。