对数字进行排序,使偶数提前

MGS*_*MGS 2 javascript arrays

我有20个随机数的数组(从-10到10),我需要对它们进行排序.偶数必须在数组前面.比如让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);
Run Code Online (Sandbox Code Playgroud)

我试过这个功能,但它不起作用.

Poi*_*nty 6

您可以使用该.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;
});
Run Code Online (Sandbox Code Playgroud)

.sort()方法的比较器函数从数组传递两个值.该函数应返回:

  • 如果第一个应该第二个之前排序,则为负数;
  • 如果第一个应该第二个之后排序,则为正数;
  • 如果它们与订购目的相同则为零.