如何用 Javascript 复制数组的每个索引?

How to duplicate every index of an array with Javascript?

我为此苦苦挣扎,因为所有搜索引擎结果都是关于在数组中查找重复项。而我想要的恰恰相反。

我有一组颜色:

const colors = ["#fff", "#666", "#000"];

我如何简单地复制或复制它的每个索引?

x2: ["#fff", "#fff", "#666", "#666", "#000", "#000"];

x3: ["#fff", "#fff", "#fff", "#666", "#666", "#666", "#000", "#000", "#000"];

x...

编辑:

在投了很多反对票之后,我不得不说我不是 JS 开发人员。我感谢所有的答案和努力。感谢 SO 社区。

您可能无法找到问题的答案,因为从技术上讲,您希望在每个索引处复制 ,而不是索引本身。

一种方法是构建一个数组,每个元素都是一个包含 2 个项目的数组,然后将整个数组展平。就像在 build: [["#fff", "#fff"], ["#666", "#666"]] 中一样,然后在其上调用 .flat() 来展平它。大多数函数式语言,包括 Javascript,都提供了一个 flatMap() 函数来做到这一点:

["#fff", "#666", "#000"].flatMap(el => [el, el])

您可以通过构建更大的内部数组将元素增加三倍:

["#fff", "#666", "#000"].flatMap(el => [el, el, el])

对于一般情况,您可以使用带有 fillflatMap 的数组构造函数:

console.log(['abc', 123, 'xyz'].flatMap(el => Array(3).fill(el)));

我做了更通用的函数 called duplicate 需要两个 arguments 一个 arr 我们要迭代的数组,另一个是 times 你想重复每个值的次数 使用 flatmap() with Array#fill

function duplicate(arr, times){
  return arr.flatMap(x=>Array(times).fill(x))
}
const colors = ["#fff", "#666", "#000"];
console.log("x2", duplicate(colors,2))
console.log("x2", duplicate(colors,3))