我正在编写合并排序算法,在合并辅助函数中,我有以下比较语句:
function merge(a,b){
var result = [];
while(a.length && b.length){
result.push(a[0] < b[0] ? a.shift() : b.shift()); // you can't just grab a[0] or b[0]
//as it results in a fatal error.
}
return, etc.
}
为什么当我输入 a[0] 而不是 'a.shift()' 时,会导致 fatal error ?是因为您正在使用条件子句中的内容做某事吗?
最佳答案
查看 shift 的文档.它删除第一个元素。因此,如果您只访问 a[0] 并且不删除它,那么 while 循环将永远不会退出。
关于javascript合并/排序 fatal error ,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31362821/