json数组根据指定字段自定义顺序

可以通过定义一个顺序映射(权重表),然后按照权重来排序。

// 有数据data,根据name的值按照 M5 -> M4 -> M3 -> M2 -> P3 -> P2 -> P1 -> 不铨叙 -> 空 来排序
const data = [
    { "name": "P1", "value": 53 },
    { "name": "M2", "value": 5 },
    { "name": "P2", "value": 49 },
    { "name": "M3", "value": 9 },
    { "name": "P3", "value": 4 },
    { "name": "M4", "value": 2 },
    { "name": "M5", "value": 5 },
    { "name": "不铨叙", "value": 6 },
    { "name": "空", "value": 7 }
];

// 定义排序顺序(数值越小越靠前)
const orderMap = {
    "M5": 1,
    "M4": 2,
    "M3": 3,
    "M2": 4,
    "P3": 5,
    "P2": 6,
    "P1": 7,
    "不铨叙": 999,
    "空": 1000
};

data.sort((a, b) => {
    return (orderMap[a.name] || 9999) - (orderMap[b.name] || 9999);
});

console.log(data);

输出结果

 M5 -> M4 -> M3 -> M2 -> P3 -> P2 -> P1 -> 不铨叙 ->
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值