gpt4 book ai didi

javascript - 遍历两个(不同长度的)数组以产生交替输出

转载 作者:塔克拉玛干 更新时间:2023-11-02 20:56:47 25 4
gpt4 key购买 nike

循环两个数组以产生交替输出的有效方法是什么?在 JavaScript 中。

如果我有两个像这样的数组:

var oddNumbers = [1, 3, 5, 7, 9]
var evenNumbers = [2, 4, 6, 8, 10, 12, 14]

注意:数组的长度可能不同

如何获得以下输出?

Output: 1, 2, 3, 4, 5, 6, 7, 8, 9, 10, 12, 14

我原以为这会起作用:

if (oddNumber.length > evenNumbers.length) {
var large = oddNumbers;
} else {
var large = evenNumbers;
}
for(var i = 0; i < large.length; i++){
if (evenNumbers.length >= i && oddNumbers.length >= i) {
console.log(oddNumbers[i] + ", " + evenNumbers[0]);
} elseif (evenNumbers.length >= i) {
console.log(evenNumbers[0]);
} else {
console.log(oddNumbers[0]);
}
}

但是它非常困惑,有没有更好的方法来解决这个问题?

注意:这些不一定是数字顺序,或者实际上是数字

最佳答案

如果你只想输出它们,我宁愿这样做:

var oddNumbers = [1, 3, 5, 7, 9];
var evenNumbers = [2, 4, 6, 8, 10, 12, 14];
for (var i=0, j=0; i < oddNumbers.length || j < evenNumbers.length;) {
if (i < oddNumbers.length) {
console.log(oddNumbers[i++]);
}
if (j < evenNumbers.length) {
console.log(evenNumbers[j++]);
}
}

如果您想将合并结果作为另一个数组获取,您可以将 console.log 替换为 result.push 以将结果值推送到名为 result 的数组中,如下所示:

var oddNumbers = [1, 3, 5, 7, 9];
var evenNumbers = [2, 4, 6, 8, 10, 12, 14];
var result = [];
for (var i=0, j=0; i < oddNumbers.length || j < evenNumbers.length;) {
if (i < oddNumbers.length) {
result.push(oddNumbers[i++]);
}
if (j < evenNumbers.length) {
result.push(evenNumbers[j++]);
}
}
console.log(result);

只要其中一个数组包含我们尚未访问的元素,您就可以通过这种方式迭代两个数组,并且还可以防止对同一数组的同一索引进行两次迭代。请注意,我在 if block 中使用增量来节省 2 行代码。您还可以将它们移至 for 循环,因为它们不会中断 if 语句。

关于javascript - 遍历两个(不同长度的)数组以产生交替输出,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38720395/

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