簡體   English   中英

如何通過數組內的“sortby”鍵對這個對象進行排序?

[英]How can I sort this object by 'sortby' key which inside an array?

            {
                "AA": [
                    {
                        "key_name": "category",
                        "value": "long",
                        "sortby": "3"
                    }
                ],
                "BB": [
                    {
                        "key_name": "category",
                        "value": "long",
                        "sortby": "5"
                    }
                ],
                "CC": [
                    {
                        "key_name": "category",
                        "value": "short",
                        "sortby": "1"
                    }
                ]
            }

我需要使用鍵“sortby”對這個對象進行排序,並且它在一個數組中? 任何人都可以幫忙嗎?

您應該創建一個對象鍵數組,然后根據數據中的屬性值對其進行排序,然后將它們映射到一個新對象中:

 const data = { "AA": [ { "key_name": "category", "value": "long", "sortby": "3" } ], "BB": [ { "key_name": "category", "value": "long", "sortby": "5" } ], "CC": [ { "key_name": "category", "value": "short", "sortby": "1" } ] } const res = Object.keys(data).sort((a, b) => { return parseInt(data[a][0].sortby, 10) - parseInt(data[b][0].sortby, 10) }); const sortedData = {}; res.map(key => sortedData[key] = data[key]); console.log(sortedData)

這不是一個好的做法,因為對象在 javascript 中是可變的,並且這種實現可能會在將來給您帶來很多麻煩。 最好的方法是對它們進行排序,然后將它們推入數組:

 const data = { "AA": [ { "key_name": "category", "value": "long", "sortby": "3" } ], "BB": [ { "key_name": "category", "value": "long", "sortby": "5" } ], "CC": [ { "key_name": "category", "value": "short", "sortby": "1" } ] } const res = Object.keys(data).sort((a, b) => { return parseInt(data[a][0].sortby, 10) - parseInt(data[b][0].sortby, 10) }).map(key => ({ key, value: data[key] })); console.log(res)

Object.fromEntries(Object.entries(obj).sort(([key1, value1], [key2, value2]) => {
    return value1[0].sortby - value2[0].sortby
}))

一行解決方案:

 var o = { "AA": [ { "key_name": "category", "value": "long", "sortby": "3" } ], "BB": [ { "key_name": "category", "value": "long", "sortby": "5" } ], "CC": [ { "key_name": "category", "value": "short", "sortby": "1" } ] } o = Object.keys(o).sort(function(a, b){ return parseInt(o[a][0].sortby) - parseInt(o[b][0].sortby); }).reduce(function(acc, e){ acc[e] = o[e]; return acc; }, {}) console.log(o);

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM