亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

我如何使用 JavaScript 實現這種排序?

我如何使用 JavaScript 實現這種排序?

慕容森 2023-01-06 09:28:52
所以我有一個如下所示的“結構”,我需要按照下面的“關鍵值”的順序對其進行排序,以獲得下面的“輸出”。我怎樣才能做到這一點?結構體:[    {        rs: {            1 MONTHS: "100",            1 YEAR: "200",            3 MONTHS: "30",            6 MONTHS: "400"}    },    {        rs: {            1 MONTHS: "500",            1 YEAR: "40",            3 MONTHS: "700",            6 MONTHS: "800"}    },    {        rs: {            1 MONTHS: "199",            1 YEAR: "1989",            3 MONTHS: "597",            6 MONTHS: "20"}    },    {        rs: {            1 MONTHS: "356",            1 YEAR: "10",            3 MONTHS: "877",            6 MONTHS: "1145"}    }]關鍵價值觀:["10", "20", "30", "40"]排序后的輸出[    {        rs: {            1 MONTHS: "356",            1 YEAR: "10",            3 MONTHS: "877",            6 MONTHS: "1145"}    },    {        rs: {            1 MONTHS: "199",            1 YEAR: "1989",            3 MONTHS: "597",            6 MONTHS: "20"}    },    {        rs: {            1 MONTHS: "100",            1 YEAR: "200",            3 MONTHS: "30",            6 MONTHS: "400"}    },    {        rs: {            1 MONTHS: "500",            1 YEAR: "40",            3 MONTHS: "700",            6 MONTHS: "800"}    }]我想過濾我從 API 端點接收的數據結構格式,以根據值對其進行排序,使其與生成的鍵數組的順序相同。
查看完整描述

1 回答

?
LEATH

TA貢獻1936條經驗 獲得超7個贊

您可以為所需的順序獲取一個對象,并獲取與排序匹配的對象的值。


const

    getValue = o => Object.values(o).find(v => values.includes(v)),

    data = [{ rs: { "1 MONTHS": "100", "1 YEAR": "200", "3 MONTHS": "30", "6 MONTHS": "400" } }, { rs: { "1 MONTHS": "500", "1 YEAR": "40", "3 MONTHS": "700", "6 MONTHS": "800" } }, { rs: { "1 MONTHS": "199", "1 YEAR": "1989", "3 MONTHS": "597",  "6 MONTHS": "20" } }, { rs: { "1 MONTHS": "356", "1 YEAR": "10", "3 MONTHS": "877", "6 MONTHS": "1145" } }],

    values = ["10", "20", "30", "40"],

    order = Object.fromEntries(values.map((v, i) => [v, i + 1]));


data.sort(({ rs: a }, { rs: b }) => order[getValue(a)] - order[getValue(b)]);


console.log(data);

.as-console-wrapper { max-height: 100% !important; top: 0; }


查看完整回答
反對 回復 2023-01-06
  • 1 回答
  • 0 關注
  • 115 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號