【问题标题】:Check if the predicate (second argument) is truthy on all elements of a collection (first argument)检查谓词(第二个参数)是否在集合的所有元素(第一个参数)上为真
【发布时间】:2018-12-25 18:36:27
【问题描述】:

给你一个对象的数组集合。谓词 pre 将是一个对象属性,如果它的值是真实的,您需要返回 true。否则,返回 false。

function truthCheck(collection, pre) {
 //To Do
}

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

【问题讨论】:

  • 请格式化您的帖子。
  • "sex" 不是谓词。这是一个字符串。你是说属性名吗?
  • 在 JS 中我们称它们为“数组”,而不是“集合”。

标签: javascript algorithm object


【解决方案1】:

您可以使用Array#every 并使用给定键检查每个元素的真实性。

every() 方法测试数组中的所有元素是否通过提供的函数实现的测试。

function truthCheck(array, key) {
    return array.every(function (a) {
        return a[key];
    });
}

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

【讨论】:

    【解决方案2】:

    我无法发表评论,所以在这里作为答案。他的问题来自freeCodeCamp bonfire

    创建一个算法来检查谓词(第二个参数)在集合的所有元素(第一个参数)上是否为真。他必须创建一个带有参数的function truthCheck(collection, pre)

    collection = [{"user": "Tinky-Winky", "sex": "male"}, {"user": "Dipsy", "sex": "male"}, {"user": "Laa-Laa", "sex": "female"}, {"user": "Po", "sex": "female"}];
    

    pre = "sex";
    

    应该返回真。

    基本上,您必须获取第二个参数(即“sex”)并查看它是否在数组集合上的所有对象上都具有 truthy 值。请记住 that truthy means 任何不同于 false、0、""、null、undefined 和 NaN 的值。有了这个解释,你应该能够完成你的练习。但是下次我建议您在此处询问之前单击 freeCodeCamp 中的“获取提示”按钮。

    FreeCodeCamp discussion forum 有详细的讨论和充分解释的答案,并有适当的推理

    【讨论】:

      猜你喜欢
      • 2012-02-28
      • 2016-03-06
      • 2021-12-19
      • 1970-01-01
      • 1970-01-01
      • 2014-07-04
      • 1970-01-01
      相关资源
      最近更新 更多