我有这样的东西:
$scope.traveler = [
{ description: 'Senior', Amount: 50},
{ description: 'Senior', Amount: 50},
{ description: 'Adult', Amount: 75},
{ description: 'Child', Amount: 35},
{ description: 'Infant', Amount: 25 },
];
现在,为了得到这个数组的总数量,我做了这样的事情:
$scope.totalAmount = function(){
var total = 0;
for (var i = 0; i < $scope.traveler.length; i++) {
total = total + $scope.traveler[i].Amount;
}
return total;
}
当只有一个数组时,这很容易,但我有其他具有不同属性名的数组,我想要求和。
如果我能做这样的事情,我会更快乐:
$scope.traveler.Sum({ Amount });
但我不知道怎样才能在将来重复使用它:
$scope.someArray.Sum({ someProperty });
如何使用Javascript和对象数组
const traveler = [
{ description: 'Senior', Amount: 50},
{ description: 'Senior', Amount: 50},
{ description: 'Adult', Amount: 75},
{ description: 'Child', Amount: 35},
{ description: 'Infant', Amount: 25 }
];
Const traveler = [
{描述:'高级',数量:50},
{描述:'高级',数量:50},
{描述:“成人”,数量:75},
{描述:'Child',数量:35},
{描述:“婴儿”,数量:25},
];
函数sum(arrayData, key){
返回arrayData.reduce((a,b) => {
返回{金额:a.金额+ b.金额}
})
}
console.log(总和(旅行)
`
提高可读性和使用Map和Reduce的替代方案:
const traveler = [
{ description: 'Senior', amount: 50 },
{ description: 'Senior', amount: 50 },
{ description: 'Adult', amount: 75 },
{ description: 'Child', amount: 35 },
{ description: 'Infant', amount: 25 },
];
const sum = traveler
.map(item => item.amount)
.reduce((prev, curr) => prev + curr, 0);
可重用功能:
const calculateSum = (obj, field) => obj
.map(items => items.attributes[field])
.reduce((prev, curr) => prev + curr, 0);
从对象数组
function getSum(array, column)
let values = array.map((item) => parseInt(item[column]) || 0)
return values.reduce((a, b) => a + b)
}
foo = [
{ a: 1, b: "" },
{ a: null, b: 2 },
{ a: 1, b: 2 },
{ a: 1, b: 2 },
]
getSum(foo, a) == 3
getSum(foo, b) == 6