在对象数组中将数字相加
Adding numbers in a object array
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
相关文章:
- 如何按对象反转Angular ngRepeat的顺序's键,这些键是数字键
- 对象获胜'如果qml中的其他地方定义了数字动画属性,则t设置动画
- 更改json/javascript对象var名称或从数字var中检索值
- 按数字而不是按名称选择JSON对象
- 在Javascript中,如何在JSON对象中将1.00表示为数字
- 在JavaScript中,在对象上装箱每个数字和字符串的性能成本是多少
- 获取对象的所有可能组合,其中值的总和与数字匹配
- JavaScript 对象 - 未定义的数字键文字
- 转换为对象的数字
- Javascript:接收对象并返回对象中描述的所有数字的列表的函数
- 在对象数组中将数字相加
- 如何在谷歌可视化api柱状图中使用的json对象内用数字替换字符串值
- 将函数应用于填充有数字的对象
- 如何访问以数字开头的对象属性(语法错误:意外的标识符)
- 当键是数字时,如何在JavaScript中对对象值进行排序
- 如何在具有数字的JSON对象中导航
- 检查布尔值并将其转换为对象中的数字
- 使用带有数字键的对象呈现 _.template
- 数字和数字对象有什么区别
- 谷歌访问和重命名数字对象名称