【问题标题】:Iterate collection for truthy/falsey values迭代收集真/假值
【发布时间】:2015-05-22 16:28:10
【问题描述】:

我对学校作业有一些突出的要求,应该从集合中返回真值/假值。以下是突出的要求:

1) 应该作为所有真实结果的集合

2) 应该通过包含混合真假结果的集合

3) 应该传递一个包含一个字符串真值的集合

4) 应该传递一个包含一个匹配值的集合

5) 应该将结果转换为布尔值

6) 在没有提供回调时应该可以工作

我是 Javascript 的新手,所以我不确定是否可以在同一个函数中完成以上所有操作,但这就是我阅读作业的方式。这是我目前所拥有的:

  myCustomForEach = function(collection, iterator) {
      for(var val in collection){
          if (iterator(collection[val])) {
              return true;
          } else {
              return false;
          }
      }
  };

这是我需要帮助的功能:

 myTruthTest = function(collection, iterator) {
     var result = _.every(collection, iterator);
     if (result) {
         return true;
     } else {
         return false;
     }
 };

我不需要使用自定义的 forEach,但我不能使用任何内置函数。我是在想这个还是我认为这需要超过 1 个功能才能达到所需的结果?非常感谢您的帮助。

【问题讨论】:

  • 参考 #5:Javascript 没有强制转换,但有类型转换。
  • 我也不懂要求#6

标签: javascript loops collections truthiness


【解决方案1】:

您可以使用内置过滤功能:

var myTruthTest = function(collection, iterator) {
    return !!collection.filter(function(item) {
        return !!item || iterator && iterator(item);
    }).length;
};

【讨论】:

  • 它需要返回一个布尔值(我认为)。所以我在想_.some 可能会更好。
  • 有些是理想的,这基本上是我想要建立自己的,但这是症结所在。如果有意义的话,我正在尝试做 _.some,而不使用 _.some,因为我不能使用任何内置函数。本练习旨在了解这些功能的工作原理。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 2018-01-14
  • 1970-01-01
  • 2016-09-01
  • 2018-08-06
  • 1970-01-01
  • 2015-03-30
相关资源
最近更新 更多