我试图在JavaScript中创建一个简单的冒泡排序并且无法理解为什么我的代码不起作用,问题似乎来自第二个if语句,我不知道确切的问题,因为浏览器I& #39;我在使用此代码时拒绝加载页面进行测试。
var arr = [4, 6, 0, 3, -2, 1];
var arr2 = [arr[0]];
arr.forEach(function(elem){
for(var j=0; j<arr2.length; j++){
if(elem < arr2[j]){
arr2.splice(j, 0, elem);
break;
}
//if number is largest on last iteration add it to the end of the array
if(j == arr2.length-1){
console.log(elem);
//problem seems to be here
arr2[arr2.length] = elem;
}
}
});
console.log(arr);
console.log(arr2);
答案 0 :(得分:0)
如果elem
低于.splice
,则会将arr[j]
添加到数组中,但您永远不会删除elem
的旧实例。顺便说一句,你总是添加items数组,它总是越来越大。您需要从数组中取出elem
的旧实例,以便从迭代到迭代,数组长度保持不变。
所以,在某个地方,你应该将1
传递给splice
的第二个参数,以从数组中取出一些东西。
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/splice