用Javascript排序数组元素

JavaScript具有强大的内置函数来对数组进行排序。默认情况下,sort方法按字母顺序对元素进行排序。例如, 

示例

let arr1 = ["Zebra", "Bear", "Tiger"];
arr1.sort();
console.log(arr1);

输出结果

这将给出输出-

[ 'Bear', 'Tiger', 'Zebra' ]

现在让我们看一个int示例, 

示例

let arr1 = [1, 8, 31, 21];
arr1.sort();
console.log(arr1);

输出结果

这将给出输出-

[ 1, 21, 31, 8 ]

这不是我们所期望的。正在输出此信息,因为默认情况下sort方法按字母顺序对元素进行排序。为了根据我们的意愿进行排序,我们需要为其提供一个比较函数,该函数将应用2个参数来确定哪个较大和哪个较小并进行相应的排序。所以为了排序整数数组,您应该调用-

示例

let arr1 = [1, 8, 31, 21];
arr1.sort((a, b) => a - b);
console.log(arr1);

输出结果

这将给出输出&,-;

[ 1, 8, 21, 31 ]

这也可以用来提供在更复杂的情况下(例如对对象数组进行排序)应使用哪些键进行排序。例如, 

示例

let people = [{
   name: "Zoe",
   age: 35
}, {
   name: "Richard",
   age: 21
}, {
   name: "Agnes",
   age: 25
}];
people.sort((a, b) => {
   let nameA = a.name.toUpperCase(); // ignore upper and lowercase
   let nameB = b.name.toUpperCase(); // ignore upper and lowercase
   if (nameA < nameB) {
      return -1;
   }
   if (nameA > nameB) {
      return 1;
   } // names must be equal
   return 0;
}) console.log(people)

输出结果

这将给出输出-

[ { name: 'Agnes', age: 25 },
{ name: 'Richard', age: 21 },
{ name: 'Zoe', age: 35 } ]

更复杂的对象也可以通过这种方式进行分类。这与您如何构造比较功能有关。

如您所见,此函数将数组排序到位。为了在保持相同顺序的同时返回新的排序数组,可以使用以下代码首先创建一个副本,然后应用排序。

输出

arr.slice(0).sort();