Programing

LINQ Any ()와 동등한 JavaScript / jQuery

crosscheck 2021. 1. 7. 19:41
반응형

LINQ Any ()와 동등한 JavaScript / jQuery


IEnumerable.Any(Predicate<T>)JavaScript 또는 jQuery에에 상응하는 것이 있습니까?

항목 목록을 확인 중이며 오류가 감지되면 조기에 중단하고 싶습니다. 을 사용하여 할 수 $.each있지만 항목이 실제로 발견되었는지 확인하려면 외부 플래그를 사용해야합니다.

var found = false;
$.each(array, function(i) {
    if (notValid(array[i])) {
        found = true;
    }
    return !found;
});

더 나은 방법은 무엇입니까? for값뿐만 아니라 모든 멤버를 반복하기 때문에 JavaScript 배열과 함께 일반 사용하는 것을 좋아하지 않습니다 .


요즘에는 실제로 Array.prototype.some(ES5에 지정됨) 사용 하여 동일한 효과를 얻을 수 있습니다.

array.some(function(item) {
    return notValid(item);
});

is조건자를 받아들이는 jQuery 함수의 변형을 사용할 수 있습니다 .

$(array).is(function(index) {
    return notValid(this);
});

배열 요소 만 반복 하는 일반 for루프 (아님 for ... in)를 사용해야합니다 .


시온의 대답이 맞습니다. 그의 대답을 확장하려면 :

jQuery .is(function)는 .NET의 IEnumerable.Any(Predicate<T>).

에서 http://docs.jquery.com/is :

표현식에 대해 현재 선택을 확인하고 선택 항목의 하나 이상의 요소가 주어진 표현식에 맞는 경우 true를 반환합니다.


JavaScript for in루프 를 시도해 보는 것이 좋습니다 . 그러나 구문은 .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);
}

$.grep()방법 을 사용하는 것이 좋습니다 . 다음과 매우 가깝습니다 IEnumerable.Any(Predicate<T>).

$.grep(array, function(n, i) {
  return (n == 5);
});

다음은 작업 샘플입니다. http://jsfiddle.net/ErickPetru/BYjcu/ .


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


With https://www.npmjs.com/package/manipula that implements all C# LINQ methods, it would be:

Manipula.from([0,1]).any(x=>x>0)

ReferenceURL : https://stackoverflow.com/questions/5950602/javascript-jquery-equivalent-of-linq-any

반응형