![](/img/trans.png)
[英]How can I reorder an ELEMENT inside of an OBJECT of an array of OBJECTS NOT sort?
[英]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.