arr1 = [1,2,3,4,5,6],
arr2 = [1,2,3,4,5,6],
请问有没有什么比较方便的方法,使得两个数组能都错位合并,使得结果arr3 = [1,1,2,2,3,3,4,4,5,5,6,6]
arr1 = [1,2,3,4,5,6],
arr2 = [1,2,3,4,5,6],
请问有没有什么比较方便的方法,使得两个数组能都错位合并,使得结果arr3 = [1,1,2,2,3,3,4,4,5,5,6,6]
大概是这样
Array.from({length: Math.max(arr1.length, arr2.length)}, (_, i) => [arr1[i], arr2[i]]).flat()
如果有过滤需求后面再加上
.filter(v => typeof v !== 'undefined')
function merge() {
const arr1 = [1, 2, 3, 4, 5, 6];
const arr2 = [1, 2, 3, 4, 5, 6];
const maxCount = Math.max(arr1.length, arr2.length);
let count = 0;
const res = [];
while (count < maxCount) {
arr1[count] && res.push(arr1[count]);
arr2[count] && res.push(arr2[count]);
count++;
}
}
function merge(a, b) {
var ret = [];
var length = Math.max(a.length, b.length);
for (var i = 0; i < length; ++i) {
if (a.hasOwnProperty(i)) ret.push(a[i]);
if (b.hasOwnProperty(i)) ret.push(b[i]);
}
return ret;
}
console.dir(merge(arr1, arr2));
此方法会改变原数组,如果不想改变,可在方法开头copy一份数组。
const merge = (arr1, arr2) => {
const arr3 = []
while (arr1.length > 0 || arr2.length > 0) {
if (arr1.length) {
arr3.push(arr1.shift())
}
if (arr2.length) {
arr3.push(arr2.shift())
}
}
return arr3
}
function zip(target, ...arrs) {
return target.map((item, index) => [item, ...arrs.map((arr) => arr[index])]);
}
var arr1 = [1,2,3,4,5];
var arr2 = [1,2,3,4,5];
var a = arr1.concat(arr2);
console.log(a);
10 回答11.7k 阅读
2 回答3.2k 阅读✓ 已解决
4 回答2.2k 阅读✓ 已解决
3 回答1.2k 阅读✓ 已解决
3 回答843 阅读✓ 已解决
3 回答1k 阅读✓ 已解决
2 回答1.2k 阅读✓ 已解决