我有一个js对象JSON
var s = [
{
"MONTH":" 2018-01",
"DEPARTMENT":"Legals",
"EMPLOYEE":"Smith A.",
"AMOUNT":"14289.66"
},
{
"MONTH":" 2018-01",
"DEPARTMENT":"Legals",
"EMPLOYEE":"Jonson B.",
"AMOUNT":"7408.05"
},
{
"MONTH":" 2018-01",
"DEPARTMENT":"Legals",
"EMPLOYEE":"Lee C.",
"AMOUNT":"10102.98"
}
]
我想要计算AMOUNT属性的总和,并使用next (我使用了源代码stackoverflow_count_summ中的代码):
s.sum = function(items, prop){
return items.reduce( function(a, b){
return a + b[prop];
}, 0);
};
sTotal = s.sum(s, 'AMOUNT');
但是我得到了一个错误信息:"TypeError: s.sum不是一个函数“
如何通过对象获取“AMOUNT”值的总和?
发布于 2018-08-06 06:45:08
尝试使用以下代码:
var s = [
{
"MONTH":" 2018-01",
"DEPARTMENT":"Legals",
"EMPLOYEE":"Smith A.",
"AMOUNT":"14289.66"
},
{
"MONTH":" 2018-01",
"DEPARTMENT":"Legals",
"EMPLOYEE":"Jonson B.",
"AMOUNT":"7408.05"
},
{
"MONTH":" 2018-01",
"DEPARTMENT":"Legals",
"EMPLOYEE":"Lee C.",
"AMOUNT":"10102.98"
}
];
s.__proto__.sum = function(items, prop){
return items.reduce( function(a, b){
return a + +b[prop];
}, 0);
};
sTotal = s.sum(s, 'AMOUNT');
console.log(sTotal);
我将函数设置为proto,并添加类型转换作为返回。我在Firefox、Chrome和Edge上测试了它,它工作正常。
发布于 2018-08-06 06:43:30
我不是在这里告诉您应该如何执行此操作,但我将以与您在此处发布的格式非常相似的格式回答您的问题。您可以简单地解析AMOUNT属性中的字符串,并将其转换为浮点数。
s.sum = function(arr) {
return arr.reduce(function(acc, obj) {
return acc += parseFloat(obj.AMOUNT);
}, 0);
}
您可以在此codepen中查看工作示例。
发布于 2018-08-06 08:22:16
首先,我收到了错误消息,因为我的s是字符串类型,所以我必须将其转换为数组。
并为我提供原件的函数
s.__proto__.sum = function(items, prop){
return items.reduce( function(a, b){
return a + +b[prop];
}, 0);
};
sTotal = s.sum(s, 'AMOUNT');
console.log(sTotal);
谢谢你们大家
https://stackoverflow.com/questions/51698661
复制相似问题