为了账号安全,请及时绑定邮箱和手机立即绑定

根据值的有序列表对对象数组进行排序

根据值的有序列表对对象数组进行排序

慕尼黑8549860 2022-09-16 21:46:24
const arr = [{Id:"3",name: "ADMIN"},{Id:"1",name: "SECURITY"},{Id:"2",name: "INFORMATION_REPORTING"},{Id: "23",name: "PAYMENTS_SERVICES"},{Id: "344",name: "PAYMENT_HUB"},{Id: "31",name: "RTP"},{Id: "43",name: "PAYMENTS"},{Id: "34",name: "GPI_ALERTS"},{Id: "65",name: "ADMINISTRATION"}]我有arr,它具有此处描述的值。我想使用如下所示的键名称对arr重新排序,按顺序显示。ADMINADMINISTRATIONPAYMENTSRTPPAYMENTS_SERVICESINFORMATION_REPORTINGPAYMENT_HUBSECURITYGPI_ALERTS因此,我希望根据名称键按上面显示的顺序进行arr。
查看完整描述

1 回答

?
牛魔王的故事

TA贡献1830条经验 获得超3个赞

您可以根据项目在Array.prototype.sort()arrArray.prototype.indexOf()orderList


const arr = [{Id:"3",name:"ADMIN"},{Id:"1",name:"SECURITY"},{Id:"2",name:"INFORMATION_REPORTING"},{Id:"23",name:"PAYMENTS_SERVICES"},{Id:"344",name:"PAYMENT_HUB"},{Id:"31",name:"RTP"},{Id:"43",name:"PAYMENTS"},{Id:"34",name:"GPI_ALERTS"},{Id:"65",name:"ADMINISTRATION"}],


    orderList =  ['ADMIN','ADMINISTRATION','PAYMENTS','RTP','PAYMENTS_SERVICES','INFORMATION_REPORTING','PAYMENT_HUB','SECURITY','GPI_ALERTS'],

    

    result = arr.sort(({name:nameA},{name:nameB}) =>

        !orderList.includes(nameA) ?

        1 :

        !orderList.includes(nameB) ?

        -1 :

        orderList.indexOf(nameA) - orderList.indexOf(nameB)

      )

      

console.log(result)      

.as-console-wrapper{min-height:100%;}


查看完整回答
反对 回复 2022-09-16
  • 1 回答
  • 0 关注
  • 82 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号