遍历对象数组并输出自定义对象 [英] Iterate through an Array of Objects and output custom object
本文介绍了遍历对象数组并输出自定义对象的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!
问题描述
我需要从Typescript中的对象数组中构建自定义对象。
I am needing to build a custom object from an array of objects in Typescript.
在下面的示例中,我如何计算salesman_1_name是多少次在数组中,为每个Salesman_1_name添加毛额,并计算每个Salesman_1_name的保修是否不为null?因此,如果我有:
In the giving example below, How do I count how many times the salesman_1_name is in the Array, Add the gross for each Salesman_1_name, and count if warranty is not null for each salesman_1_name? So if I have:
[
{salesman_1_name:Brian, gross:100, warranty: Easycare},
{salesman_1_name:Brian, gross:100, warranty: Easycare},
{salesman_1_name:Brian, gross:100, warranty: null},
{salesman_1_name:Kreso, gross:100, warranty: null},
{salesman_1_name:Filip, gross:100, warranty: Easycare}
]
我需要输出:
[
Name:Brian, Count:3, Gross:300, WarrantyCount:2,
Name:Kreso, Count:1, Gross:100, WarrantyCount:0,
Name:Filip, Count:1, Gross:100, WarrantyCount:1
]
推荐答案
您可以使用对象作为对具有以下名称的组的引用并进行汇总。
You could use an object as reference to the group with the name and make your aggregation.
var data = [{ salesman_1_name: 'Brian', gross: 100, warranty: 'Easycare' }, { salesman_1_name: 'Brian', gross: 100, warranty: 'Easycare' }, { salesman_1_name: 'Brian', gross: 100, warranty: null }, { salesman_1_name: 'Kreso', gross: 100, warranty: null }, { salesman_1_name: 'Filip', gross: 100, warranty: 'Easycare' }],
grouped = [];
data.forEach(function (a) {
if (!this[a.salesman_1_name]) {
this[a.salesman_1_name] = { Name: a.salesman_1_name, Count: 0, Gross: 0, WarrantyCount: 0 };
grouped.push(this[a.salesman_1_name]);
}
this[a.salesman_1_name].Count++;
this[a.salesman_1_name].Gross += a.gross;
a.warranty !== null && this[a.salesman_1_name].WarrantyCount++;
}, Object.create(null));
console.log(grouped);
.as-console-wrapper { max-height: 100% !important; top: 0; }
这篇关于遍历对象数组并输出自定义对象的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!
查看全文