思路:我们可以返回数组array中的奇数,形成一个新的奇数odd数组(利用filter()返回),同时在建立一个位置place数组来保存每个奇数的位置。然后对奇数odd数组进行排序,再根据位置place数组中每个元素的值,把排序完以后的odd数组中的元素重新添加到数组array中。
function sortArry(array) {
//构建一个保存奇数位置的数组
var place = new Array();
//返回数组中的奇数,构成一个新的数组
var odd = array.filter(function (item, index, array) {
if (item % 2 != 0) {
place.push(index);
return item;
}
});
//对奇数数组进行排序(冒泡排序)
for (var i = 0; i < odd.length - 1; i++) {
for (var j = 0; j < odd.length - i - 1; j++) {
if (odd[j] > odd[j + 1]) {
var temp;
temp = odd[j];
odd[j] = odd[j + 1];
odd[j + 1] = temp;
}
}
}
//根据place数组,把拍好的奇数数组放入原数组中
for (var t = 0; t < odd.length; t++) {
array[place[t]] = odd[t];
}
//返回数组
return array;
}
console.log(sortArry([5, 3, 2, 8, 1, 4])); // 结果: [ 1, 3, 2, 8, 5, 4 ]