【问题标题】: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!");
        }
        

        【讨论】:

          猜你喜欢
          • 2018-02-10
          • 2022-01-13
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 1970-01-01
          • 2020-09-20
          相关资源
          最近更新 更多