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();