【发布时间】:2018-07-26 12:11:52
【问题描述】:
我有一张声明为var cars = new Map<string, object>(); 的地图,其中string 是汽车的型号,object 包含year 和price 之类的信息。
因此,Map 将如下所示:
Map = [
'BMW' => {
id: 123,
price: 2000,
models: {...}
},
'Opel' => {
id: 1234,
price: 3500,
models: {...}
},
....
]
我想按price 字段(asc 或 desc)对所有整数进行排序。
我想不出任何解决方案,因为迭代 values 会丢失密钥,而像我读到的 ...cars.entries() 这样的解决方案不适用,因为值不可迭代。
附:我目前正在使用 TypeScript,但 JS 的解决方案应该仍然适用。
编辑:我尝试将地图转换为数组,如下所示:
const values = Array.from(this.cars.values());
values.sort((a, b) => {
return (a.price < b.price) ? -1 : 1;
});
但是我在重建地图以保留 keys 时遇到了一些麻烦……
【问题讨论】:
-
@Nope 不是,因为那只是对象的排序。我的问题是在重新构建 Map 以保留每个值的原始键时
标签: javascript sorting dictionary es6-map