我有一个包含 20 个随机数(从 -10 到 10)的数组,我需要对它们进行排序。偶数必须位于数组前面。就像 let arr = [-2,3,6,-12,9,2,-4,-11,-8] 必须变成 arr = [-12,-8,-2,2,4,6,-11 ,3,9] 这是我的代码:
let array = Array(20).fill().map(() => Math.round(Math.random() * 20) - 10);
console.log(array);
function moveEvenToFront(array){
let temp=0;
let a=0;
for(let i=0;i<array.length;i++){
if(array[i] % 2 == 0){
for (let j=i; j>a; j-- ){
temp = array[j-1];
array[j-1] = array[j];
array[j] = temp;
}
a++;
}
}
return array;
}
moveEvenToFront(array);
我尝试了这个功能,但不起作用。
最佳答案
您可以使用.sort()
方法和比较器。比较器函数必须首先检查两个参数的“均匀性”。如果它们都是偶数或都是奇数,则比较结果将基于该值:
array.sort(function(a, b) {
let aeven = !(a % 2), beven = !(b % 2);
if (aeven && !beven) return -1;
if (beven && !aeven) return 1;
return a - b;
});
.sort()
方法的比较器函数从数组中传递两个值。该函数应返回:
- 如果第一个应该排序在第二个之前,则为负数;
- 如果第一个应该排序在第二个之后,则为正数;
- 如果订购目的相同,则为零。
关于javascript - 对数字进行排序,使偶数在前,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/53905685/