如何通过嵌套键对对象的对象进行排序
Posted
技术标签:
【中文标题】如何通过嵌套键对对象的对象进行排序【英文标题】:How to sort object of objects by nested key 【发布时间】:2019-05-13 05:32:15 【问题描述】:我有一个对象。我想根据id
对其进行排序。
这是我的数据
1918:
id: "1544596802835",
item_id: "1918",
label: "Soft Touch Salt Free Mint 500 ml (000001400045)",
combo_items: false
6325:
id: "15445968134652",
item_id: "6325",
label: "Mirindas Orange Flover 300 ml (012000800160)",
combo_items: false
6336:
id: "15445968106815",
item_id: "6336",
label: "Sting Energy 250ml (012000034220)",
combo_items: false
6498:
id: "1544596806967",
item_id: "6498",
label: "Tido Candy (01)",
combo_items: false
7461:
id: "15445968057103",
item_id: "7461",
label: "Skin Whitening Facial Kit (000051032012)",
combo_items: false
【问题讨论】:
到目前为止你尝试了什么? 其实这是一个对象字面量,不是 JSON 实际上,这是一个无效的对象字面量,而不是 JSON。 无法对对象进行排序。只有数组可以。 无法保证对象顺序,您希望如何排序? 【参考方案1】:首先,您不应该依赖 javascript 对象中的属性顺序(详见this question),这意味着您需要将对象排序到数组中。
这可以使用Array.prototype.sort()
轻松完成:
const sorted = Object.values(data).sort((a, b) => a.id - b.id);
完成sn-p:
const data =
1918:
id: "1544596802835",
item_id: "1918",
label: "Soft Touch Salt Free Mint 500 ml (000001400045)",
combo_items: false
,
6325:
id: "15445968134652",
item_id: "6325",
label: "Mirindas Orange Flover 300 ml (012000800160)",
combo_items: false
,
6336:
id: "15445968106815",
item_id: "6336",
label: "Sting Energy 250ml (012000034220)",
combo_items: false
,
6498:
id: "1544596806967",
item_id: "6498",
label: "Tido Candy (01)",
combo_items: false
,
7461:
id: "15445968057103",
item_id: "7461",
label: "Skin Whitening Facial Kit (000051032012)",
combo_items: false
;
const sorted = Object.values(data).sort((a, b) => a.id - b.id);
console.log(sorted);
(我修复了对象文字,因为它在属性之间缺少逗号)
【讨论】:
【参考方案2】:你可以试试!
function sort(data)
return Object.keys(data)
.sort().reduce((a, b) =>
a[b] = data[b];
return a; , );
const object = 9:"Name 9", 10:"Name 10", 2:"Name 2", 5:"Name 5", 3:"Name 3";
var sortObject = sort(abject);
结果是
sortObject = 2: "Name 2", 3: "Name 3", 5: "Name 5", 9: "Name 9", 10: "Name 10"
【讨论】:
以上是关于如何通过嵌套键对对象的对象进行排序的主要内容,如果未能解决你的问题,请参考以下文章