【问题标题】:sort an array of array objects by calculating the sum of key value by pairing it by key通过键配对计算键值的总和,对数组对象的数组进行排序
【发布时间】:2019-10-08 00:35:15
【问题描述】:

我有一个对象数组

[{
    "data": [{
        "name": "John",
        "id": 1,
        "total": 5
    }, {
        "name": "Bob",
        "id": 2,
        "total": 7
    }],
    "location": "CA"
}, {
    "data": [{
        "name": "John",
        "id": 1,
        "total": 1
    }, {
        "name": "Matt",
        "id": 3,
        "total": 9
    }],
    "location": "NY"
}]

我试图通过在 lodash 或 javascript 中配对键“id”来计算“总”值的总和来对其进行排序。该数据被提供给堆叠列的高图。我尝试应用 groupBy、sortBy 和我看到的所有示例都只使用数组而不是数组数组。

我期望的结果数组

[{
    "data": [{
        "name": "Bob",
        "id": 2,
        "total": 7
    },{
        "name": "John",
        "id": 1,
        "total": 5
    }],
    "location": "CA"
}, {
    "data": [{
        "name": "Matt",
        "id": 3,
        "total": 9
    },{
        "name": "John",
        "id": 1,
        "total": 1
    }, ],
    "location": "NY"
}]

【问题讨论】:

  • 嗨,欢迎来到 Stack Overflow。请在此处查看有关如何提出好问题并获得有意义答案的步骤:stackoverflow.com/help/how-to-ask
  • 请添加您要排序的内容和顺序。
  • 我想我被这个问题弄糊涂了,因为你说“通过键“id”计算“total”值的总和来排序它,但你的预期结果数组(个人)并不清楚您在排序逻辑中使用 id 的意思。
  • 所以...把你的问题分开。很容易找到一个 QA 对来对对象数组中的值求和,也很容易找到一个 QA 对来对数组进行排序......将它们组合起来。

标签: javascript jquery ecmascript-6 highcharts lodash


【解决方案1】:

解决这个问题的一种方法是使用原生 Javascript:

const arr = [{
    "data": [{
        "name": "John",
        "id": 1,
        "total": 5
    }, {
        "name": "Bob",
        "id": 2,
        "total": 7
    }],
    "location": "CA"
}, {
    "data": [{
        "name": "John",
        "id": 1,
        "total": 1
    }, {
        "name": "Matt",
        "id": 3,
        "total": 9
    }],
    "location": "NY"
}];

arr.forEach(obj => {
  obj.data.sort((a,b) => b.total + b.id - a.total - a.id);
});

console.log(arr);

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-13
    • 2017-09-29
    • 2016-01-24
    • 2019-11-18
    • 2020-07-11
    • 2021-12-24
    • 1970-01-01
    相关资源
    最近更新 更多