根据值的有序列表对对象进行排序[重复]

问题描述 投票:0回答:1
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。
javascript arrays
1个回答
0
投票
您可以使用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%;}
© www.soinside.com 2019 - 2024. All rights reserved.