如何用 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])
对于一般情况,您可以使用带有 fill
和 flatMap
的数组构造函数:
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))
我为此苦苦挣扎,因为所有搜索引擎结果都是关于在数组中查找重复项。而我想要的恰恰相反。
我有一组颜色:
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])
对于一般情况,您可以使用带有 fill
和 flatMap
的数组构造函数:
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))