【问题标题】:Can't Retrieve Nested Return Values无法检索嵌套返回值
【发布时间】:2020-09-04 11:21:58
【问题描述】:

我当前算法挑战的目标是用给定的键(第二个参数)确认评估的 obj 的第二个值的真实性。我知道更简单的方法是使用Array.every,但我想自己尝试将其分解为多个步骤。

无论出于何种原因,当满足键不正确或与键关联的值是虚假的条件时,我无法跳出函数并返回 false。它只是返回未定义。我更习惯于从 Ruby 的角度进行迭代,所以我不知道这是否会扭曲我对它应该如何工作的看法。

提前致谢。这是我的代码:

function truthCheck(collection, pre) {
  collection.forEach((obj) =>{
    let key = Object.keys(obj)[1];
    if (!(key === pre)){
      console.log("no matching key")
     return false;
    }else if (key === pre){
      if(!obj[pre]){
        console.log("falsey value")
        return false;
      }
      }
    }
  )
 return true;
}

console.log(truthCheck([{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}], "sex"));

【问题讨论】:

标签: javascript object nested return


【解决方案1】:

forEach 没有办法让您缩短循环。如果你想这样做,你有几个选择:

  • 使用for-of(或for)和break
  • 当你想停止时使用some并返回true
  • 当你想停止时使用every并返回false

在您的情况下,由于您正在遍历对象键,因此您可以使用for-in(如果合适,还可以使用hasOwnProperty 检查)和break

My answer to For each over array in JavaScript 列出了各种循环方式,包括上述方式,并附有示例。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2013-02-04
    • 2014-02-21
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-07-16
    相关资源
    最近更新 更多