我有一个看起来像这样的数据集:
[
{
"name": "Item1",
"section": "section1",
"total": 3,
}, {
"name": "Item1",
"section": "section2",
"total": 4,
}{
"name": "Item1",
"section": "section3",
"total": 7,
}, {
"name": "Item2",
"section": "section1",
"total": 1,
}, {
"name": "Item2",
"section": "section2",
"total": 2,
}, {
"name": "Item2",
"section": "section3",
"total": 3,
}
]
我只需要按第3节项目中的总值对数组进行排序,但要按名称维护顺序(第1节,第2节,然后是第3节)。因此,对于此示例,Item2应将其所有3行移到Item1上方。我尝试过按多个项目进行排序,但这并不能保持我需要的排序。我应该只获取最小/最大的商品,还是将相关的商品放到新的数组中并重复进行,还是有更合乎逻辑的方法来实现?
如果在那里我可以利用某些东西,我也会使用角网格和定格网格。
我将使用name
用作键,将total
用作section
等于等价项的值来创建地图section3
。然后,您可以使用地图进行排序。
这将根据total
in中的值对所有项目进行排序section3
,并保留与排序值匹配的原始排序顺序。
const map = new Map<string, number>(this.data
.filter(x => x.section === 'section3')
.map(x => [ x.name, x.total ]));
this.sorted = this.data.slice()
.sort((a, b) => map.get(a.name) - map.get(b.name));
这确实依赖于您在问题中指定的结构化和排序的数据。
本文收集自互联网,转载请注明来源。
如有侵权,请联系 [email protected] 删除。
我来说两句