从数组中获取对象属性的总和

时间:2016-11-10 14:55:57

标签: javascript angularjs arrays

我必须获得unit_price数字的总和。我怎样才能做到这一点?

数组如下所示:

 $scope.items = [
    {
        id: '1',
        name: 'Phone',
        quantity: '1',
        unit_price: '200'
    },
    {
        id: '2',
        name: 'IPhone',
        quantity: '1',
        unit_price: '240'
    }
];

3 个答案:

答案 0 :(得分:8)

reduce数组:

var total = $scope.items.reduce(function(x,y) { return x + parseInt(y.unit_price) }, 0);

答案 1 :(得分:1)

试试这个:

var sum = 0;
angular.forEach($scope.items, function(value, key){
    sum = sum + value.unit_price;
});

答案 2 :(得分:0)

尽管您可以 为此使用reduce,但没有理由这样做,很容易出错。 ({reduce在使用预定义的,可重用的reducer进行功能编程时非常有用;否则,它会变得过于复杂。)

您只需要一个简单的循环,也许需要进行一些破坏:

let sum = 0;
for (const {unit_price} of $scope.items) {
    sum += +unit_price;
//         ^−−−−−−−−−−− converts your strings to numbers
}

实时示例:

const $scope = {};
$scope.items = [
    {
        id: '1',
        name: 'Phone',
        quantity: '1',
        unit_price: '200'
    },
    {
        id: '2',
        name: 'IPhone',
        quantity: '1',
        unit_price: '240'
    }
];

let sum = 0;
for (const {unit_price} of $scope.items) {
    sum += +unit_price;
}

console.log(sum);

unit_price字符串重新转换为数字:我的答案here列出了您执行此操作的各种选项,每种选项都有其优点和缺点。我已经使用了上面的一元+,但是还有其他选择。