我正在尝试解决问题,但我很难从拼接方法中获得答案。我试图从数组中取出所有奇数,将它们按顺序排列,然后将它们放回数组中,同时保留偶数。在我的最后一个for循环中,我试图使用splice来获取当前奇数的索引,将其删除,并通过变量将已排序的奇数放回去。它没有按照我的意图行事。感谢您提供的任何帮助。
function sortArray(array) {
var odds = [];
for (var i = 0; i < array.length; i++) {
if (array[i] % 2 !== 0) {
odds.push(array[i]);
}
}
odds.sort();
console.log('array', array)
for (var j = 0; j < array.length; j++) {
var x = 0;
if (array[i] % 2 !== 0) {
x = odds.shift();
console.log('x', x)
array.splice(i, 1, x); <-- I think this is my problem...maybe...
console.log('array 2', array)
}
}
console.log(array)
return array;
}
sortArray([5, 3, 2, 8, 1, 4])
这些是我从中得到的控制台日志:
array [ 5, 3, 2, 8, 1, 4 ]
x 1
array 2 [ 5, 3, 2, 8, 1, 4, 1 ]
x 3
array 2 [ 5, 3, 2, 8, 1, 4, 3 ]
x 5
array 2 [ 5, 3, 2, 8, 1, 4, 5 ]
x undefined
array 2 [ 5, 3, 2, 8, 1, 4, undefined ]
x undefined
array 2 [ 5, 3, 2, 8, 1, 4, undefined ]
x undefined
array 2 [ 5, 3, 2, 8, 1, 4, undefined ]
x undefined
array 2 [ 5, 3, 2, 8, 1, 4, undefined ]
[ 5, 3, 2, 8, 1, 4, undefined ]
=> [ 5, 3, 2, 8, 1, 4, undefined ]
答案 0 :(得分:0)
splice期待两个参数
所以在你的代码中。 第1步:创建奇数数组 第2步:对它进行排序 步骤3:从现有阵列中删除奇数 步骤4:将奇数奇数组连接到现有数组的末尾。
Step-1&amp; 2很好
步骤-3&amp; 4
for (var j = 0; j < array.length; j++) {
var x = 0;
if (array[j] % 2 !== 0) {
array.splice(j, 1);
}
}
array = array.concat(odds);