indexOf 메서드입니다 개체에서 어레이입니다?
39 의 what& 어레이에서는 객체에는 색인입니다 가져올 수 있는 가장 좋은 방법은?
이런 시나리오를 가정해 보세요.
var hello = {
hello: 'world',
foo: 'bar'
};
var qaz = {
hello: 'stevie',
foo: 'baz'
}
var myArray = [];
myArray.push(hello,qaz);
지금 가지고 있는 싶다 '는' & # 39, stevie& 객체에는 indexOf '속성' 안녕 ',', '1' 이 들어 있는 # 39 될 것 "이라고 말했다.
39 m, t, 예쁜 뉴비 i& JavaScript 와 쉐퍼드도 don& # 39 는 간단한 방법 또는 다운로드되었는지 만약 내가 내 스스로 그렇게 할 수 있어 구축하십시오 기능을 한다.
467
27
저는 그 한 줄 매핑해야 기능을 사용하여 해결할 수 있습니다.
아리스프로토티페스핀디네스 가 지원되는 IE 이외의 모든 브라우저에서 (비사양 면쪽). 그러나 [폴리필] [2] 제공한 건 좋아요.
이 솔루션을 통해 맵은 그땅은. 하지만 넌 반복 전체에 걸쳐 어레이입니다 모든 검색. 그것은 오직 한 번 반복 최악의 경우 어떤 정지점으로 핀디네스 해당되어서는 찾았습니다.
hr /> <;
39 의 별로 간결한 way< /strike> There& strike> <;;; (devs 때 인도하심이라만일 걱정이 IE8) 하지만 here& # 39 의 공통 해결책:
또는 함수로:
그냥 어떤 유라유라테이코쿠:
39 don& for.in 루프가 어레이에는 사용할 수 없다.
예를 들어,
[2]: # 폴리필 https://developer.mozilla.org/en-us/docs/web/javascript/reference/global_objects/array/findindex
이는 에서 ES2015 상당히 쉽게:
또는, 아마도 뛰어난 성능의 대규모 어레이에는:
I like Pablo& # # # 39 라고 하지만, s, t 맵 don& 어레이입니다 indexOf 및 어레이입니다 # 39 의 작동합니까 모든 브라우저. S # 39 는 네이티브 코드를 사용할 수 있지만, 밑줄 it& 경우 대체 방법이 잘 알려져 있다. 또한 당기기 하는 방법, 익명 메서드 s # 39 는 정확히 어떤 Pablo& 매핑해야 않습니다.
정보기술 (it), 또는 원형 :< br/>.
개요
활용 사례:
API:
내가 여기에 대답을 실행할 수 있는 다양한 일부 성능 테스트 누구나 할 수 있는 자체.
https://jsperf.com/find-index-of-object-in-array-by-contents
내 기준으로 초기 테스트를 구글 크롬, 다음 방법 (for 루프 내부에 설정되었습니다 프로토타입 (prototype) 은 가장 빠른:
이 코드는 약간 수정된 버전의 네이선 Zaetta& # 39 의 그 답이 있다.
정보기술 (it) 의 성능 비교 대상이 되는 것을 봤을때 내가 모두 갖춘 가운데 (인덱스화할 500) 와 매우 끝 (인덱스화할 999) 는 1000년 객체에는 어레이입니다, 설사 내가 동일팔레트에 타겟대상 에 마지막 항목은 매우 array (즉 it 가 반복하고 있는 어레이입니다 it& 전에 모든 단일 품목 # 39 의 늑대굴에서) motor1.1end 백업하도록 그래도 가장 빠른.
이 중 가장 간결한 솔루션도 이익을 위한 마지막 줄 것을 거듭 실행, 이후 해당 반복해야 합니다.
반면, 대부분의 다른 여기에 대답을 사용할 수 있습니다. 그냥 가끔 it& # 39 의 가장 가까운 이를 사용할 수 있는 간단한 함수 파선-짧은 만듭니다.
의존하기 주목할 수 있습니다. 이 코드는 저장할 수 있으며, 또는 아주 똑똑한 지정값이 일반 솔루션을 사용할 수 있는 다양한 곳에 한 줄 광고문 동일팔레트에 닫히지만 면쪽 건이다. 하지만 가끔 그냥 기도하라주여 it& # 39 의 하는 게 낫다. 나는 여기서 그것을했다 그것을비유하사 this" "; 남겨두십시오 개발자가 아닌 것으로 향후 추가 역엔지니어링 작동합니까. 특히, 이 경우 교도관님도요 고려해보십시오 " newbie". 같은 질문.
내가 받은 결과 여러 가지 방법을 통해 비해 가장 빠른 방법으로 이 문제를 해결했다. # 39 의 'a' s 루프지 it&. # 39 의 5+ 배 빠른 it& 다른 어떤 경쟁업체보다도 메서드입니다.
다음은 test& # 39 의 페이지: https://jsbench.me/9hjewv6a98
Mind the ' [0]'.
사용할 수 있는 것이 가장 적절한 '라구나' & # 39 의 안토니오 '으로' 답변.
간략하게 대한 사과 드립니다.
단지 관심 찾을 경우 포지셔닝하십시오 @Pablo& # 39 의 오토메이티드 를 참조.
"'pos = 미라이스마프 (함수 (e) {반품하십시오 에드헬러. }) 스이네쇼프 (& # 39, stevie& # 39,), "'
그러나 요소를 찾기 위한 하는 경우 (즉, 어떤 생각을 하고 있었을 경우 이 같은 일이 'myArray [pos]') , 방법을 사용하여 보다 효율적인 방법이 한 그것을하지 '필터'.
"'요소 = 미라이트필터 ((e) = >. # 39, & # 39, stevie& 에드헬러 =) [0], "'
지켜보리니 성능 결과를 (~ + 42% ops / sec): http://jsbench.github.io/ # 7fa01f89a5dc5cc3bee79abfde80cdb3
이거 드세요.
https://developer.mozilla.org/en/docs/Web/JavaScript/Reference/Global_Objects/Object/keys
단순하다.
편리한 기능을 기본적으로 () '및' 아리스프로토티페스핀디네스 넷윈을 사용할 수 있습니다.
>. 이 경우 핀디네스 반환됩니다 배열의 인덱스 () 의 요소를 어레이입니다 충족합니다 제공된 테스트 기능을. 그렇지 않으면 - 1 반환됨.
오페라, 사파리, Internet Explorer 에서 지원되지 않습니다 그냥 적어두십시오 확장하지만 아래 링크를 나와 폴리필 사용할 수 있습니다.
추가 정보:
https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex
<! - begin 스니핏: js 숨기십시오: 거짓값 콘솔: 참 - >.
끝 - < 스니핏 >;!
내가 예증의표적으로 아래의 코드가 & 일반 기능을 확인할 수 있습니다. 모든 객체에 대한 작동됨
첫 번째 경고마다 & 반환되므로 - 1 (고말은 해당되어서는 찾을 수 없음). 두 번째 경고 반환되므로 0 (고말은 해당되어서는 늑대굴에서).
[언더스코엘가이스 라이브러리란] '를 사용하여 _.findIndex' (http://underscorejs.org/ # 핀디네스)
39 의 here& 예제
'_.findIndex ([{1}, {a: 2, c 10}, {a: //1}, {3}] 2gb/s c 10) '
'핀디네스' 방법 로다시 ES6 사용하여 라이브러리, 또는 기타 없이 쓸 수 있습니다.
이렇게 하면 바로 비교하십시오 객체의 속성 (단, 재귀 꽂으십시오 이다.
39 는 '아직' 핀디네스 doesn& 구축상의 경우, t (가장 don& # 39, t) 이 검색 敲阀汽俊 汲摹窍妨绰 폴리필 표시등으로 추가할 수 있습니다.
(from my 오토메이티드 켜짐이 [이 중복 제거] (https://stackoverflow.com/a/35207185/129032))
[@Monika 가르크 오토메이티드] 의 푸르소 (https://stackoverflow.com/questions/8668174/indexof-method-in-an-object-array # 21544736) ['핀디네스 ()'] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex) 사용할 수 있습니다 (좁히어 는 [폴리필] (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/findIndex # 폴리필) 를 언스베르트 브라우저).
내가 본 다운보테드 사람들이 이 질문에 대한 잘못된 문법, 그들은 이런게야 슬픔으로창백해지고 바란다, 그리고 제 생각이지만, 이 때문에 가장 세련된 것입니다.
>. 이 경우 핀디네스 반환됩니다 배열의 인덱스 () 의 요소를 어레이입니다 충족합니다 제공된 테스트 기능을. 그렇지 않으면 - 1 반환됨.
예를 들면 다음과 같습니다.
<! - begin 스니핏: js 숨기십시오: > 거짓값 -;
끝 - < 스니핏 >;!
같은 경우 물체의 객체인지 수준들과 어레이이며 내에서 사용할 수 있어야 합니다 색인입니다 내려받습니다 객체에는 할 때와 같은 방법으로 마치 문자열으로.