【问题标题】:is there an equivalent of the ruby any method in javascript?javascript中是否有等效于ruby的任何方法?
【发布时间】:2015-09-08 15:31:51
【问题描述】:

是否有与 ruby​​ 的 any 方法等效的数组但在 javascript 中?我正在寻找这样的东西:

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

有什么想法吗?

【问题讨论】:

标签: javascript arrays ruby iteration


【解决方案1】:

您正在寻找Array.prototype.some 方法:

var match = arr.some(function(w) {
   return w.indexOf('z') > -1;
});

在 ES6 中:

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

【讨论】:

    【解决方案2】:
    arr.filter( function(w) { return w.contains('z') }).length > 0
    

    【讨论】:

    • 不会短路。
    猜你喜欢
    • 2021-01-18
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-05-24
    • 1970-01-01
    • 2010-12-11
    • 2014-04-06
    • 2019-09-12
    相关资源
    最近更新 更多