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。
Array.prototype.sort()
并根据arr
在Array.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%;}