2014-05-21 2 views
2

I 자바 스크립트얻기 인덱스

var axes = [{id: "a"}, {id: "b"}] 

의 요소의 배열을하고 난 (I 자바 스크립트에서 하나의 라이너를 원 가변

var axis = {id: "b"} 

에 유사한 하나의 항목을 Linq 한 라이너 내가 C#에서 할 수있는)이 요소가 존재하는 배열의 인덱스를 얻을 것이다. 그래서,이 예제에서 나는 대답 1을 얻을 것이다.

이것은 어떻게 가능합니까?

+0

을'{ id = "b"}'는 적절한 자바 스크립트가 아닙니다. 당신은'{id : "b"}'를 원합니다. – Andy

+0

이 질문보기 http://stackoverflow.com/questions/11258077/how-to-find-index-of-an-object-by-key-and-value-in-an-javascript-array – 111

답변

1
당신은 배열의 프로토 타입을 map 방법을 사용할 수 있습니다

:

var axisIndex = axes.map(function(x) {return x.id; }).indexOf(axis.id); 

https://stackoverflow.com/a/16100446/1414562

그리고 이전 버전의 브라우저를 지원하기 위해, 당신은 jQuery의 방법을 사용할 수 있습니다

var axisIndex = $.inArray(axis.id, $.map(axes, function(x){return x.id})); 
0

axes 배열의 요소 중 하나와 같게 보이지만 실제로는 axes 배열의 요소가 아닌 새로운 axis 개체를 생성하려는 것으로 보입니다. 이 경우 indexOf 메서드는 배열에서 검색중인 정확한 개체를 찾으려고하기 때문에 작동하지 않습니다.

이 작업을 수행하는 방법이 있습니다. 일반적으로 한 줄 이상의 제한이 있습니다 (한 줄의 제한이 상당히 사소한 것처럼 보입니다). 그러나, 나는보기 싫어 보이지만 실제 라이브 코드보다 코드 골프 문제에 더 적합한 솔루션을 발견했습니다.

axes.indexOf(axes.filter(function(el) {if (el.id === axis.id) return true; }).shift());

관련 문제