gpt4 book ai didi

javascript - 当第二个数组为 0 时,无法在 JavaScript 中合并两个排序数组

转载 作者:行者123 更新时间:2023-11-29 18:59:55 25 4
gpt4 key购买 nike

我正在尝试编写一个函数来合并两个排序的数组 a 和 b。但是,当数组 b 的值为 0 时,它只会将数组 a 显示为输出:

function mergeSortedArrays(a,b) {
var merged = [],
aElm = a[0],
bElm = b[0],
i = 1, //index for array a
j = 1; //index for array b

if (a.length == 0) {
return b;
}
if (b.length == 0) {
return a;
}

while (aElm || bElm) {
if ((aElm && !bElm) || aElm < bElm) { //problem is that it thinks that 0 == !bElm
merged.push(aElm);
aElm = a[i++];
} else {
merged.push(bElm);
bElm = b[j++];
}
}
return merged;
}
mergeSortedArrays([2,5,6,9], [0,1,2,3,29]) //outputs [2,5,6,9]

我知道问题是因为 0 是假的,所以在 if(aElm && !bElm) 条件下,它只会不断地将 aElm 插入 merged。什么是更好的编写条件的方法,以便它将 0 识别为整数而不是不存在?

最佳答案

What would be a better way of writing the conditional so that it recognizes the 0 as a integer rather than not existing?

编写条件的更好方法是不测试数组元素是否存在,而是检查索引。

function mergeSortedArrays(a,b) {
var merged = [],
i = 0, //index for array a
j = 0; //index for array b

while (i < a.length || j < b.length) {
if (j == b.length || a[i] < b[j]) {
merged.push(a[i++]);
} else {
merged.push(b[j++]);
}
}
return merged;
}

关于javascript - 当第二个数组为 0 时,无法在 JavaScript 中合并两个排序数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47469594/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com