JavaScript / jQuery相当于LINQ Any()
在JavaScript或jQuery中是否有相当于IEnumerable.Any(Predicate<T>) ? 
 我正在validation项目列表,并希望如果检测到错误提前中断。 我可以使用$.each ,但是我需要使用一个外部标志来查看是否真的find了这个项目: 
 var found = false; $.each(array, function(i) { if (notValid(array[i])) { found = true; } return !found; }); 
 什么是更好的方法? 我不喜欢在JavaScript数组中使用plain for因为它遍历所有成员,而不仅仅是值。 
 现在你实际上可以使用Array.prototype.some (在ES5中指定)获得相同的效果: 
 array.some(function(item) { return notValid(item); }); 
 你可以使用jQuery的变体is接受谓词的函数: 
 $(array).is(function(index) { return notValid(this); }); 
锡安的答案是正确的。 为了扩大他的答案:
  jQuery的.is(function)具有与.NET的IEnumerable.Any(Predicate<T>)相同的行为。 
如果select的至less一个元素符合给定的expression式,则检查当前select是否符合expression式并返回true。
 你应该使用一个普通for循环(不适for ... in ),这将只循环数组元素。 
 我build议你使用$.grep()方法。 它非常接近IEnumerable.Any(Predicate<T>) : 
 $.grep(array, function(n, i) { return (n == 5); }); 
这里给你一个工作示例: http : //jsfiddle.net/ErickPetru/BYjcu/ 。
 我build议你for in循环中尝试JavaScript。 但是请注意,语法与使用.net IEnumerable获得的语法完全不同。 这里是一个小的说明代码示例。 
 var names = ['Alice','Bob','Charlie','David']; for (x in names) { var name = names[x]; alert('Hello, ' + name); } var cards = { HoleCard: 'Ace of Spades', VisibleCard='Five of Hearts' }; for (x in cards) { var position = x; var card = card[x]; alert('I have a card: ' + position + ': ' + card); } 
你可以使用array.filter(IE 9+参见下面的链接了解更多细节)
 [].filter(function(){ return true|false ;}).length > 0; 
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/filter