javascript - 对数字进行排序,使偶数在前

标签 javascript arrays

我有一个包含 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/

相关文章:

javascript - 链接 $http.get AngularJS

javascript - jQuery onclick ul li i 并显示子 ul(如果存在)

java - 在 n 个二维数组中搜索

arrays - 创建一个不受约束的非对称数组数组

javascript - 如何使用 XMLHttpRequest 使用适当的 Content-type header 发布 RDF 数据?

javascript - 在 MVVM modelView 中进行初始化有意义吗?

javascript - Webpacker 未检测到文件 javascript/packs/application.js 中的导入函数

java - 在Java中,如何在几行而不是一行中初始化数组中的元素?

java - 在 Java 中使用 for 循环对 8x8 block 进行分组

javascript - 获取嵌套 JavaScript 对象的长度