【发布时间】:2021-07-22 03:27:52
【问题描述】:
有人可以帮我理解为什么第一段代码有效,而第二段无效吗?试图解决按顺序合并到数组的问题。第一个是解决方案代码,第二个是我想出的代码。 我无法解决为什么 i 变量似乎停留在工作循环中的循环中,但在我的代码中,当尝试在 while 循环中使用它时,arr1Item 似乎消失了?
const gerry = [0,3,4,31]
const machmoud = [4,6,30]
const mergeSort = (arr1, arr2) => {
const mergedArr = [];
//init Counters
let i= 1
let j= 1
let arr1Item = arr1[0]
let arr2Item = arr2[0]
while(arr1Item || arr2Item){
if(arr1Item < arr2Item || !arr2Item){
mergedArr.push(arr1Item)
arr1Item = arr1[i]
i++
}
else{
mergedArr.push(arr2Item)
arr2Item = arr2[j]
j++
}
}
return mergedArr
}
console.log(mergeSort(gerry, machmoud))
第二组代码
const gerry = [0,3,4,31]
const machmoud = [4,6,30]
const mergeSort = (arr1, arr2) => {
const mergedArr = [];
//init Counters
let i= 0
let j= 0
let arr1Item = arr1[j]
let arr2Item = arr2[i]
while(arr1Item || arr2Item){
if(arr1Item < arr2Item || !arr2Item){
mergedArr.push(arr1Item)
i++
}
else{
mergedArr.push(arr2Item)
j++
}
}
return mergedArr
}
console.log(mergeSort(gerry, machmoud))
这会陷入无限循环。
【问题讨论】:
-
当输入数组中的值为零时,这两种实现都可能出错。当两个输入数组都以零开头时,肯定会出错。
标签: javascript arrays scope mergesort