【问题标题】:Sort array of objects based on the ordered list of values [duplicate]根据值的有序列表对对象数组进行排序[重复]
【发布时间】:2020-06-03 17:58:31
【问题描述】:
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】:

    您可以使用Array.prototype.sort() 并根据它们在orderList 中的位置(Array.prototype.indexOf())比较arr 项目

    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%;}

    【讨论】:

      猜你喜欢
      • 2018-12-08
      • 2014-05-29
      • 2013-12-01
      • 1970-01-01
      • 2020-06-02
      • 1970-01-01
      • 2013-11-25
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多