我试图在Js中合并两个数组。我通过学习逻辑却遇到了问题来做到这一点。我在新数组的几个索引处得到未定义的值。
const arr3 = [];
const length1= arr1.length;
const length2 = arr2.length;
let k = 0;
const totalLength = length1 + length2;
for(let i=0 ; i<=totalLength; i++){
arr3.push(arr1[i]);
if(i > length1){
arr3.push(arr2[k]);
k= k+1;
}
}
return arr3;
}
merge([1,3,25,5], [5,4,9,7]); ```
i am getting an output
[1,3,25,5,未定义,未定义,5,未定义,4,未定义,9,未定义,7]
答案 0 :(得分:1)
您需要什么:
length1
function merge(arr1, arr2) {
const arr3 = [];
const length1 = arr1.length;
const length2 = arr2.length;
let k = 0;
const totalLength = length1 + length2;
for (let i = 0; i < totalLength; i++) { // change to <
if (i < length1) {
arr3.push(arr1[i]);
} else {
arr3.push(arr2[i - length1]);
}
}
return arr3;
}
console.log(merge([1, 3, 25, 5], [5, 4, 9, 7]));
为什么不使用两个for语句,而不是遍历两个数组的长度?
function merge(array1, array2) {
var i,
result = [];
for (i = 0; i < array1.length; i++) result.push(array1[i]);
for (i = 0; i < array2.length; i++) result.push(array2[i]);
return result;
}
console.log(merge([1, 3, 25, 5], [5, 4, 9, 7]));
答案 1 :(得分:1)
如果要使用代码,请将其更改为:
function merge(arr1, arr2){
const arr3 = [];
const length1= arr1.length;
const length2 = arr2.length;
let k = 0;
const totalLength = length1 + length2;
for(let i=0 ; i<totalLength; i++){
if(i >= length1){
arr3.push(arr2[k]);
k= k+1;
}else{
arr3.push(arr1[i]);
}
}
return arr3;
}
console.log(merge([1,3,25,5], [5,4,9,7]))
或使用其他类似的解决方案:
const merge =(...arg) => [].concat(...arg);
console.log(merge([1,3,25,5],[5,4,9,7]))