gpt4 book ai didi

javascript - 使用 Lodash 对 Javascript 数组进行分组

转载 作者:行者123 更新时间:2023-12-01 02:57:57 25 4
gpt4 key购买 nike

Transaction.ts

export class Transaction {
id: string;
category: Category = new Category();
totalPrice: number;
}

类别.ts

export class Category {
id: string;
name: string;
}

我有一个 Transaction 数组,如下所示。

id:"1"
category: {id: "1", name: "Plumber"}
totalPrice: 500

id:"2"
category: {id: "1", name: "Plumber"}
totalPrice: 500

id:"3"
category: {id: "2", name: "Electrician"}
totalPrice: 1000

现在我需要对数据进行分组,如下所示。

enter image description here

我尝试使用lodash对其进行分组。但无法按照我需要的方式格式化(如上所示)。我可以在这里得到任何支持吗?

这是我尝试过的。它只是返回单个对象。之后呢?

let myArray = groupBy(this.data.transactions, (n) => {
return n.category.name;
});

像这样(这里的数据不同。只是虚拟数据)

enter image description here

更新:

 let a = groupBy(this.data.transactions, (n) => {
return n.category.name;
}).map((objs, key) => ({
'name': key,
'totalPrice': sumBy(objs, 'totalPrice')
})).value();

上面给出了这个错误:

core.es5.js:1084 ERROR Error: Uncaught (in promise): TypeError: Object(...)(...).map is not a function TypeError: Object(...)(...).map is not a function

更新2:

  const resultArray = [...reduce(this.data.transactions,(r, { totalPrice, category: { name } }) => {
const item = r.get(name) || {
name,
totalPrice: 0
};

item.totalPrice += totalPrice;

return r.set(name, item);
}, new Map()).values()];

错误:

ERROR Error: Uncaught (in promise): TypeError: Object(...)(...).values(...).slice is not a function TypeError: Object(...)(...).values(...).slice is not a function

最佳答案

您需要groupBysumBy

var grouped =  _(jsonarray)
.groupBy('category.name')
.map((objs, key) => ({
'name': key,
'totalPrice': _.sumBy(objs, 'totalPrice') }))
.value();

演示

var jsonarray = [{id:"1",
category: {id: "1", name: "Plumber"},
totalPrice: 500
},
{
id:"2",
category: {id: "1", name: "Plumber"},
totalPrice: 500
},
{
id:"3",
category: {id: "2", name: "Electrician"},
totalPrice: 1000
}];



var grouped = _(jsonarray)
.groupBy('category.name')
.map((objs, key) => ({
'name': key,
'totalPrice': _.sumBy(objs, 'totalPrice') }))
.value();

console.log(grouped);
<script src='https://cdn.jsdelivr.net/lodash/4.17.2/lodash.min.js'></script>

关于javascript - 使用 Lodash 对 Javascript 数组进行分组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46606469/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com