我有一个对象数组,我想Total
通过添加月份来更新值
var arrObj=[
{name:"ABC",Jan:0,Feb:20,Mar:30,Apr:40,May:50,Jun:70,Jul:80,Aug:90,Sep:100,Oct:110,Nov:120,Dec:130,Total:0},
{name:"BCD",Jan:10,Feb:20,Mar:30,Apr:40,May:50,Jun:70,Jul:80,Aug:90,Sep:100,Oct:110,Nov:120,Dec:130,Total:0},
{name:"DEF",Jan:10,Feb:20,Mar:30,Apr:40,May:50,Jun:70,Jul:80,Aug:90,Sep:100,Oct:110,Nov:120,Dec:130,Total:0},
{name:"FGH",Jan:10,Feb:20,Mar:30,Apr:40,May:50,Jun:70,Jul:80,Aug:90,Sep:100,Oct:110,Nov:120,Dec:130,Total:0}
]
我正在更新使用的值loops
并且它也在工作,但是有没有最好的方法来解决这个问题?
var len=arrObj.length;
var Total=0;
for(var i=0;i<len;i++){
arrObj[i].Total= +arrObj[i].Jan + +arrObj[i].Feb + +arrObj[i].Mar+ +arrObj[i].Apr+ +arrObj[i].May+ +arrObj[i].Jun+ +arrObj[i].Jul+ +arrObj[i].Aug+ +arrObj[i].Sep+ +arrObj[i].Oct+ +arrObj[i].Nov+ +arrObj[i].Dec;
}
console.log(arrObj)
var arrObj=[
{name:"ABC",Jan:0,Feb:20,Mar:30,Apr:40,May:50,Jun:70,Jul:80,Aug:90,Sep:100,Oct:110,Nov:120,Dec:130,Total:0},
{name:"BCD",Jan:10,Feb:20,Mar:30,Apr:40,May:50,Jun:70,Jul:80,Aug:90,Sep:100,Oct:110,Nov:120,Dec:130,Total:0},
{name:"DEF",Jan:10,Feb:20,Mar:30,Apr:40,May:50,Jun:70,Jul:80,Aug:90,Sep:100,Oct:110,Nov:120,Dec:130,Total:0},
{name:"FGH",Jan:10,Feb:20,Mar:30,Apr:40,May:50,Jun:70,Jul:80,Aug:90,Sep:100,Oct:110,Nov:120,Dec:130,Total:0}
]
var len=arrObj.length;
var Total=0;
for(var i=0;i<len;i++){
arrObj[i].Total= +arrObj[i].Jan + +arrObj[i].Feb + +arrObj[i].Mar+ +arrObj[i].Apr+ +arrObj[i].May+ +arrObj[i].Jun+ +arrObj[i].Jul+ +arrObj[i].Aug+ +arrObj[i].Sep+ +arrObj[i].Oct+ +arrObj[i].Nov+ +arrObj[i].Dec;
}
console.log(arrObj)
我假设您是编程新手,并且我还假设您可以完全控制数据结构,因此如果您已经知道这一点,我深表歉意。
有一个概念叫做数据完整性。对此有一些规则,但对于初学者来说,最重要的是要理解数据的含义。在这种情况下,您是否完整或更改了数据,或者您只是从中读取数据?
对于总计,您不直接与其交互,它应该是对其他值的计算,而更改它的唯一方法是更改其他值。
在 JavaScript 中,有一个Getter来解决这个问题。
看起来像这样。
const obj = {
value: 3,
get doubleValue () {
return this.value * 2
}
}
obj.doubleValue // 6
在你的情况下,你可以有这样的事情。
{
get Total () {
return ...calculation
}
}
这是一个工作示例
{
name:"ABC",
Jan:0,
Feb:20,
Mar:30,
Apr:40,
May:50,
Jun:70,
Jul:80,
Aug:90,
Sep:100,
Oct:110,
Nov:120,
Dec:130,
get Total () {
const keys = ['Jan', 'Feb', 'Mar', 'Apr', 'May', 'Jun', 'Jul', 'Aug', 'Sep', 'Oct', 'Nov', 'Dec']
let sum = 0;
keys.forEach((key) => {
sum += this[key]
})
return sum
}
}
因此,如果您更改任何值,则调用 Total 它将自动更新。
本文收集自互联网,转载请注明来源。
如有侵权,请联系[email protected] 删除。
我来说两句