在 ES9 中,对 Array.prototype.sort() 进行了改进,在排序时有了更多的控制和灵活性,让我们来了解一下。
什么是 Array.prototype.sort()?
Array.prototype.sort() 是 JavaScript 中内置的用于数组排序的方法。默认情况下会按照 Unicode 码点进行升序排序。
const arr = [5, 2, 1, 2, 8, 7]; arr.sort(); // [1, 2, 2, 5, 7, 8]
ES9 的改进
ES9 对 Array.prototype.sort() 的改进主要体现在 sort() 方法可以接收一个排序函数作为参数。这个排序函数必须返回一个数字,表示排序的顺序。
-- -------------------- ---- ------- -------- ---------- -- - -- -- - -- - ------ --- - -- -- - -- - ------ -- - ------ -- - ----- --- - --- -- -- -- -- --- ------------------ -- --- -- -- -- -- --
这样我们就可以自定义排序规则了。排序函数有两个参数,代表需要比较的两个元素。如果返回值小于 0,表示第一个元素应该排在第二个元素前面;如果返回值大于 0,表示第二个元素应该排在第一个元素前面;如果等于 0,表示两个元素顺序不变。
反向排序
除了自定义排序规则,ES9 还支持数组反向排序。传递一个函数作为参数时,可以使用函数的 reverse()
方法。
const arr = [5, 2, 1, 2, 8, 7]; arr.sort((a, b) => b - a); // [8, 7, 5, 2, 2, 1]
使用引用类型
对于引用类型,我们可以使用相同的方式进行排序,并且可以自定义排序规则。
const arr = [ { name: "Tom", age: 10 }, { name: "Jerry", age: 8 }, { name: "Mike", age: 12 }, ]; arr.sort((a, b) => a.age - b.age); // [{ name: "Jerry", age: 8 }, { name: "Tom", age: 10 }, { name: "Mike", age: 12 }]
总结
ES9 对 Array.prototype.sort() 的改进给我们提供了更多的控制和灵活性,可以自定义排序规则以及支持数组反向排序。在排序时使用这些新特性,能够更加高效地实现业务需求。
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/64fbe0b0f6b2d6eab31f71f6