DRYing 数组相乘的函数
DRYing Function that multiplies array
我有一个包含 100 个元素的数组,我将其分成 10 个较小的数组,以便将原来的 100 个元素四倍化为一个包含 400 个元素的数组。
我目前正在使用:
function quadulator(arrChunks){
let a = [];
let b = [];
for(var i = 0; i< arrChunks.length;++i){
a.push(arrChunks[i]);
a.push(arrChunks[i]);
b.push(arrChunks[i]);
b.push(arrChunks[i]);
}
return a.concat(b);
}
let group1 = quadulator(grid100[0]);
let group2 = quadulator(grid100[1]);
let group3 = quadulator(grid100[2]);
let group4 = quadulator(grid100[3]);
let group5 = quadulator(grid100[4]);
let group5 = quadulator(grid100[5])
let newArr = group1.concat(group2,group3,group4,group5);
这完全符合我的要求,但我正在寻找一种方法来消除重复。
我将它分成多个部分的原因是因为我需要原始数组中索引为 0 的元素在新数组的索引 0、1、20 和 21 中重复自身,以及与所有其他元素遵循此模式。
您可以通过注意 a
和 b
相同来改进 quadulator
函数。您可以一次创建一个用 Array.from
表示它们的数组,然后将该数组展开两次。
然后,用你的group
s,你可以通过quadulator
函数map
grid100,然后把它展开成[].concat
来展平:
function quadulator(arrChunks) {
const chunksDoubled = Array.from(
{ length: arrChunks.length * 2 },
(_, i) => arrChunks[Math.floor(i / 2)]
);
return [...chunksDoubled, ...chunksDoubled];
}
const newArr = [].concat(...grid100.map(quadulator));
演示:
const grid100 = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
];
function quadulator(arrChunks) {
const chunksDoubled = Array.from(
{ length: arrChunks.length * 2 },
(_, i) => arrChunks[Math.floor(i / 2)]
);
return [...chunksDoubled, ...chunksDoubled];
}
const newArr = [].concat(...grid100.map(quadulator));
console.log(newArr);
我有一个包含 100 个元素的数组,我将其分成 10 个较小的数组,以便将原来的 100 个元素四倍化为一个包含 400 个元素的数组。
我目前正在使用:
function quadulator(arrChunks){
let a = [];
let b = [];
for(var i = 0; i< arrChunks.length;++i){
a.push(arrChunks[i]);
a.push(arrChunks[i]);
b.push(arrChunks[i]);
b.push(arrChunks[i]);
}
return a.concat(b);
}
let group1 = quadulator(grid100[0]);
let group2 = quadulator(grid100[1]);
let group3 = quadulator(grid100[2]);
let group4 = quadulator(grid100[3]);
let group5 = quadulator(grid100[4]);
let group5 = quadulator(grid100[5])
let newArr = group1.concat(group2,group3,group4,group5);
这完全符合我的要求,但我正在寻找一种方法来消除重复。
我将它分成多个部分的原因是因为我需要原始数组中索引为 0 的元素在新数组的索引 0、1、20 和 21 中重复自身,以及与所有其他元素遵循此模式。
您可以通过注意 a
和 b
相同来改进 quadulator
函数。您可以一次创建一个用 Array.from
表示它们的数组,然后将该数组展开两次。
然后,用你的group
s,你可以通过quadulator
函数map
grid100,然后把它展开成[].concat
来展平:
function quadulator(arrChunks) {
const chunksDoubled = Array.from(
{ length: arrChunks.length * 2 },
(_, i) => arrChunks[Math.floor(i / 2)]
);
return [...chunksDoubled, ...chunksDoubled];
}
const newArr = [].concat(...grid100.map(quadulator));
演示:
const grid100 = [
[1, 2, 3, 4],
[5, 6, 7, 8],
[9, 10, 11, 12],
[13, 14, 15, 16]
];
function quadulator(arrChunks) {
const chunksDoubled = Array.from(
{ length: arrChunks.length * 2 },
(_, i) => arrChunks[Math.floor(i / 2)]
);
return [...chunksDoubled, ...chunksDoubled];
}
const newArr = [].concat(...grid100.map(quadulator));
console.log(newArr);