Javascript 如何使用JS在JSON上获取不同的值并求和总数

Javascript 如何使用JS在JSON上获取不同的值并求和总数,javascript,jquery,arrays,json,arraylist,Javascript,Jquery,Arrays,Json,Arraylist,如何从不同的值中获取数据?如何将同一唯一行中的总值相加 下面是JSON数据结果 正如你所看到的,他们有相同的全名。如何在合计priceGross时获得不同的值 结果应该会回来 例如,“Khalem Williams”并加上总的价格总额“1200+1200”=2400 结果返回 FullName : "Khalem Williams" TotalPriceGross: "2400" 我用下面的代码得到了不同的值,但我想知道如何在得到不同值的同时求和总价 var countTotal = []

如何从不同的值中获取数据?如何将同一唯一行中的总值相加

下面是JSON数据结果

正如你所看到的,他们有相同的全名。如何在合计
priceGross
时获得不同的值

结果应该会回来 例如,
“Khalem Williams”
并加上总的
价格总额
“1200+1200”=2400

结果返回

FullName : "Khalem Williams" 
TotalPriceGross: "2400"
我用下面的代码得到了不同的值,但我想知道如何在得到不同值的同时求和总价

var countTotal = [];

$.each(data.aaData.data,function(index, value){
          if ($.inArray(value.invoiceToFullName, countTotal)==-1) {
                    countTotal.push(value.invoiceToFullName);
          }
});

我真诚地建议将您的数据转换为一个对象,该对象的名称为键(唯一),总价为值:

{
  "Khalem Williams": 2400,
  "John Doe": 2100
}
但是,我在下面的代码片段中包含了如何将数据转换为对象数组的示例代码。我使用了
Object.keys
Array#reduce
Array#map
的组合

var数据={
aa数据:{
数据:[{
invoiceToFullName:“Khalem Williams”,
价格总额:1200
},
{
invoiceToFullName:“Khalem Williams”,
价格总额:1200
},
{
invoiceToFullName:“John Doe”,
价格总额:500
},
{
invoiceToFullName:“John Doe”,
价格总额:1600
},
]
}
}
var map=data.aaData.data.reduce(函数(映射,发票){
var名称=invoice.invoiceToFullName
var价格=+发票价格总额
地图[名称]=(地图[名称]| | 0)+价格
返回图
}, {})
console.log(映射)
var数组=Object.keys(map).map(函数名){
返回{
全名:姓名,
totalPriceGross:地图[名称]
}
})

console.log(array)
刚刚创建了我自己的虚拟数据,类似于你的,希望你能理解,如果没有,你可以粘贴你的json,我可以调整我的解决方案,只是懒得重新创建你的json

您的问题似乎是sql中典型的按字段分组的问题

样本数据:

   var resultsData = [{name: 'sipho', amount: 10}, {name: 'themba', amount: 30}, {name: 'sipho', amount: 60}, {name: 'naidoo', amount: 30}, {name: 'gupta', amount: 70}, {name: 'naidoo', amount: 10}];
通过以下方式获取要分组的客户(字段)的价值:

var customers = $.unique(resultsData.map(function(value){return value.name}));
对每个客户进行检查,并将以下内容添加到他们的金额中:

var desiredSummary = customers.map(function(customer){
    var sum =0; 
    $.each(test,function(index, value){sum+=(value.name==customer?value.amount:0)}); 
    return {customer: customer, sum: sum}
});

希望有帮助,Happy coding

您能确认这是您要问的问题吗:
data.aaData.data
处的值是发票对象的数组,其中每个对象都包含属性
invoiceToFullName
priceGross
(您突出显示
PriceNet
,但指定了
priceGross
),您希望将其转换为一个包含名称和价格之和的对象?
{“Khalem Williams”:2400,…}
输出会更好,并让对象合并uniques。这非常有帮助。我不知道javascript中预定义的“reduce”函数。谢谢