Javascript按“组”对数组进行排序并保持顺序

肖恩

我有一个看起来像这样的数据集:

[
{
    "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然后,您可以使用地图进行排序。

这将根据totalin中的值对所有项目进行排序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));

这确实依赖于您在问题中指定的结构化和排序的数据。

演示:https : //stackblitz.com/edit/angular-fsswdq

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

Javascript按日期和字母顺序对数组进行排序

Javascript在Oracle中按顺序对数组进行排序

对数组进行排序并保持顺序

按特定顺序对数组进行排序

按定义的顺序对数组进行排序

按特定顺序对数组进行排序

按特定顺序对数组进行排序

对数组进行排序,直到 3 个元素按顺序排列,其余保持原样

在Javascript中按名字(按字母顺序)对数组进行排序

如何按顺序数组对数组进行排序?

javascript-按另一个数组的顺序对数组进行排序

根据搜索输入按字母顺序对数组进行排序

按字母顺序对数组进行排序:Coffeescript

用数字按字母顺序对数组进行排序

Numpy Python:按字母顺序对数组的列进行排序

使用sort方法按字母顺序对数组进行排序

按字母顺序对数组列表进行排序

无法按字母顺序对数组进行排序

使用 lodash 按特定顺序对数组进行排序

如何按预定义的顺序对数组进行排序

在javascript中按字母顺序对数组及其对象键进行排序

使用 foreach 按组和人对数组进行排序

按给定顺序对Javascript数组进行排序

按人工顺序对JavaScript数组进行排序

Javascript按子数组对数组进行排序

JavaScript:根据排列顺序对数组进行排序?

在Java中按长度先对数组排序,然后按字母顺序对数组进行排序

在JavaScript中按多个对象属性对数组进行排序

JavaScript按多个(数字)字段对数组进行排序