什么是Array.any? 为JavaScript

我正在寻找一个JavaScript的方法返回true或false时,它是空的..像Ruby的东西any? 还是empty?

[].any? #=> false
[].empty? #=> true

与ruby的Enumerable相比,Javascript标准库相当差,大部分内容都应该由人工编写。 光明的一面,在大多数情况下这是微不足道的。

 Array.prototype.isEmpty = function() {
     return !this.length;
 }

 Array.prototype.any = function(func) {
    return this.some(func || function(x) { return x });
 }

像下划线这样的库已经提供了这样的包装器,如果你习惯了ruby的收集方法,那么将它们包含在你的项目中是有意义的。

正如@Pointy指出的,JS数组不是列表,它们只是具有数字键和length定义为max(keys) + 1 。 因此,真正的收集方法可以给出令人惊讶的结果(就像这种语言中的其他一切)。


JavaScript native .some()方法完全符合您的需求:

function isBiggerThan10(element, index, array) {
  return element > 10;
}

[2, 5, 8, 1, 4].some(isBiggerThan10);  // false
[12, 5, 8, 1, 4].some(isBiggerThan10); // true

即使数组的长度不为零,JavaScript数组也可以是“空的”。 例如:

var empty = new Array(10);
var howMany = empty.reduce(function(count, e) { return count + 1; }, 0);

即使数组初始化为长度为10 ,变量“howMany”也将设置为0

因此,因为许多数组迭代函数只关注数组中实际赋值的元素,您可以使用类似this的调用来.some()以查看数组中是否有实际内容:

var hasSome = empty.some(function(e) { return true; });

传递给.some()的回调只要被调用就会返回true ,所以如果迭代机制发现值得检查的数组元素,结果将是true

链接地址: http://www.djcxy.com/p/37753.html

上一篇: what is Array.any? for javascript

下一篇: JavaScript: splitting letters followed by digits