JavaScript中是否有与Ruby的any方法等效的方法?

3
是否有javascript中类似于ruby数组的any方法的等价物?我正在寻找像这样的东西:
arr = ['foo','bar','fizz', 'buzz']
arr.any? { |w| w.include? 'z' } #=> true

我可以使用JavaScript的forEach方法获得类似的效果,但这需要遍历整个数组,而不是像Ruby的any方法一样在找到匹配值时立即停止。

var arr = ['foo','bar','fizz', 'buzz'];
var match = false;
arr.forEach(function(w) {
  if (w.includes('z') {
    match = true;
  }
});
match; //=> true

如果我真的想要简化操作,我可以使用for循环,但这样做会非常丑陋。两种解决方案都非常啰嗦。

var arr = ['foo','bar','fizz', 'buzz'];
var match = false;
for (var i = 0; i < arr.length; i++) {
  if (arr[i].includes('z')) {
    match = true;
    i = arr.length;
  }  
}
match; //=> true

有什么想法吗?

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/some - Sean Hill
Array.prototype.some。现在必须引用ECMA-262 ed6作为规范。 :-) - RobG
2个回答

9
你正在寻找 Array.prototype.some 方法:
var match = arr.some(function(w) {
   return w.indexOf('z') > -1;
});

在ES6中:

const match = arr.some(w => w.indexOf('z') > -1);

0
arr.filter( function(w) { return w.contains('z') }).length > 0

不进行短路运算。 - user663031

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接