在对象数组中将数字相加

Adding numbers in a object array

本文关键字:数字 对象 数组      更新时间:2024-05-08
var numbers = [{grades:[100,100,100]}];
var result = 0;
for (var i=0;i<numbers.length;i++){
    for (var p in numbers.grades[i]);
    result+=p+":"+numbers[i][p];
    //console.log(p+":"+numbers[i][p])
    console.log(result);
}

这就是我目前所拥有的。我知道如何获取 .grades 中的所有数字,但我希望它们都以非常简单的方式相加。

您遇到的问题是numbers.length只是1。你想要

numbers[0].grades.length; // 3

这应该为您汇总成绩

for (var i=0, sum=0; i<numbers[0].grades.length; i++) {
  sum += numbers[0].grades[i];
}
sum; // 300

如果你有权访问Array.prototype.reduce,你可以使用它

var sum = numbers[0].grades.reduce(function(a, b) { return a +  b; }, 0);
sum; // 300

注意 .reduce 需要 ECMAScript >= 5,在IE <= 8中不起作用

你几乎拥有了它

var numbers = [{grades:[100,100,100]}];
var result = 0;
for (var i=0;i<numbers.length;i++){
    for (var g=0; g<numbers[i].grades.length; g++) {
    result = result+numbers[i].grades[g];
    console.log(result);
    }
}

如前所述,如果它确实支持 ES5,您可以这样编写:

var numbers = [{grades:[100,100,100]}];
var result = 0;
numbers.forEach( function(val) {
    result = result + val.grades.reduce( function (previousValue, currentValue, index, array) {
        return previousValue + currentValue;
    })
});

请记住,您需要遍历数字数组,而不是为其提供默认值"0"//数字[0]等级等

或者你可以尝试:

for(var j=0; j<numbers.length;j++)
{
  for (var i=0, sum=0; i<numbers[j].grades.length; i++) {
    sum += numbers[j].grades[i];
  }
}
console.log(sum);

一个更实用/javascript的方法是使用array.reduce()

var sum = numbers[0].grades.reduce(function(previousValue, currentValue, index, array){
    return previousValue + currentValue;
});
console.log(sum);

您要循环访问的列表是:

var list = numbers[0].grades;

然后,在循环内:

result += list[i];

就是这样:)


如何浏览一个javascript数组:

var a = ['I', 'need', 'the', 'basics'];
console.log(a[0]); // "I"
console.log(a[3]); // "basics"
console.log(a[a.length - 1]); // "basics"

如何浏览一个javascript对象:

var o = { a: 'I', b: 'need', c: 'the', d: 'basics' };
console.log(o.a); // "I"
console.log(o.d); // "basics"
console.log(o['d']); // "basics"

一起:

var mixed = [{ a: 'foo' }, { b: 'bar' }, { c: ['baz'] }];
console.log(mixed[0].a); // "foo"
console.log(mixed[1].b); // "bar"
console.log(mixed[2].c[0]); // "baz"

将所有成绩相加:

var grades, i, j;
var sum = 0;
var list = [
    { grades: [1, 2, 3] },
    { grades: [4, 5, 6] }
];
for (i = 0; i < list.length; i++) {
    grades = list[i].grades;
    for (j = 0; j < grades.length; j++) {
        sum += grades[j];
    }
}
console.log(sum); // 21