首先我们要知道,Array.sort()
方法是按照Unicode码点对数组进行排序的,它的默认排序顺序是将元素转换为字符串,然后比较它们对应字符的Unicode码点值。
那么,在js中,我们可以利用Array.sort()
方法实现多维排序,其具体操作步骤如下:
1.以排序维度为键名对数组进行排序
假设我们现在有一个二维数组,其中包含了商品的销售信息,如下:
const sales = [
{name: 'iphone', salesNum: 500, amount: 100000},
{name: 'macbook', salesNum: 100, amount: 200000},
{name: 'ipad', salesNum: 800, amount: 50000}
];
现在我们希望按照销售数量(salesNum)升序排列,那么我们可以使用如下代码实现:
sales.sort((a, b) => {
return a.salesNum - b.salesNum;
});
这里的sort()
方法的参数是一个回调函数,该函数返回值决定了两个元素的排序关系,若返回值小于0,则a在b前面,若返回值大于0,则a在b后面,若返回值等于0,则a和b位置不变。
2.以并列排序维度为键名添加排序标准
对于多维排序,有时候某一个维度可能存在并列的情况,此时我们需要再添加一个排序标准来进行排序。比如我们现在还有一个销售明细如下:
const salesDetail = [
{name: 'iphone', salesNum: 500, unitPrice: 200},
{name: 'ipad', salesNum: 800, unitPrice: 100},
{name: 'macbook', salesNum: 100, unitPrice: 800},
{name: 'ipod', salesNum: 500, unitPrice: 200}
];
我们需要先按照销售数量(salesNum)升序排序,但是销售数量有两个并列的值,此时我们需要再添加一个排序标准,按照价格(unitPrice)升序排序。我们可以这样实现:
salesDetail.sort((a, b) => {
if (a.salesNum === b.salesNum) {
return a.unitPrice - b.unitPrice;
}
return a.salesNum - b.salesNum;
});
在这个排序中,我们首先比较了销售数量,若相等,则再比较销售价格。
以上就是js中利用Array.sort()
方法多维排序的完整攻略。
本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:js中Array.sort()利用零值多维排序 - Python技术站