在对象数组中添加数字

时间:2013-12-08 10:20:50

标签: javascript arrays object

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中的所有数字,但我希望它们都以非常简单的方式加起来。

5 个答案:

答案 0 :(得分:3)

您遇到的问题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

中使用

答案 1 :(得分:1)

你几乎拥有它

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]等等

答案 2 :(得分: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);

答案 3 :(得分:0)

您要循环使用的列表是:

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

答案 4 :(得分:0)

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

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

console.log(sum);