【问题标题】:Javascript check if the sum of object values is equal to 0Javascript检查对象值的总和是否等于0
【发布时间】:2018-04-22 15:09:32
【问题描述】:
我有一个包含下面显示的键和值的字典。
如果字典中的所有值(所有值的总和)都等于 1,我希望出现警报。
我对 JavaScript 很陌生,但设法想出了下面的代码。它不起作用,但我认为我在正确的路线上。
for (lstLength.hasOwnProperty(key)) {
if (sum(lstLength[key]] == 0)){
window.alert("no data!")
}
}
提前感谢您的帮助。
【问题讨论】:
标签:
javascript
for-loop
sum
【解决方案1】:
您可以使用Object.values 将对象转换为数组。使用reduce 对这些值求和。
喜欢:
Object.values(lstLength).reduce((c, v) => c + v, 0)
示例代码:(带值)
let lstLength = {
'property1': 3,
'property2': 4,
'property3': 5,
'property4': 6,
};
if (Object.values(lstLength).reduce((c, v) => c + v, 0) == 0) console.log('no data!')
else console.log('with data!')
示例代码:(无值)
let lstLength = {
'property1': 0,
'property2': 0,
'property3': 0,
'property4': 0,
};
if (Object.values(lstLength).reduce((c, v) => c + v, 0) == 0) console.log('no data!')
else console.log('with data!')
【解决方案2】:
var sum = 0;
for (lstLength.hasOwnProperty(key)) {
sum += Number(lstLength[key])
}
if (sum == 0)){
window.alert("no data!")
}
【解决方案3】:
如果你想使用 for in
let lstLength = {
'propA': 0,
'propB': 0,
};
sum = 0
for (prop in lstLength) {
sum += lstLength[prop]
}
if (sum === 0) {
alert('empty list')
} else {
alert('valid list')
}
【解决方案4】:
你不必为了检查是否有数据而求和
if(Math.max(...Object.values(lstLength)) === 0) {
window.alert("no data!");
}