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

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重新排序,按顺序显示。


ADMIN

ADMINISTRATION

PAYMENTS

RTP

PAYMENTS_SERVICES

INFORMATION_REPORTING

PAYMENT_HUB

SECURITY

GPI_ALERTS

因此,我希望根据名称键按上面显示的顺序进行arr。


慕尼黑8549860
浏览 83回答 1
1回答

牛魔王的故事

您可以根据项目在Array.prototype.sort()arrArray.prototype.indexOf()orderListconst 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%;}
打开App,查看更多内容
随时随地看视频慕课网APP

相关分类

JavaScript