一个含有奇数和偶数的数组,在js中如何对它进行排序,使得其中奇数升序,偶数还在原来的位置?
ZWMLLL
于 2019-05-09 12:00:00 发布
1222
收藏 1
文章标签: JS
版权
思路:我们可以返回数组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 ]
————————————————
版权声明:本文为CSDN博主「ZWMLLL」的原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接及本声明。
原文链接:https://blog.csdn.net/zwmlll/article/details/90027065