ruby any 方法在 javascript 中是否有等价物?
is there an equivalent of the ruby any method in javascript?
是否有等效于 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
有什么想法吗?
您正在寻找 Array.prototype.some
方法:
var match = arr.some(function(w) {
return w.indexOf('z') > -1;
});
在 ES6 中:
const match = arr.some(w => w.indexOf('z') > -1);
arr.filter( function(w) { return w.contains('z') }).length > 0
是否有等效于 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
有什么想法吗?
您正在寻找 Array.prototype.some
方法:
var match = arr.some(function(w) {
return w.indexOf('z') > -1;
});
在 ES6 中:
const match = arr.some(w => w.indexOf('z') > -1);
arr.filter( function(w) { return w.contains('z') }).length > 0