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