I 자바 스크립트얻기 인덱스
var axes = [{id: "a"}, {id: "b"}]
의 요소의 배열을하고 난 (I 자바 스크립트에서 하나의 라이너를 원 가변
var axis = {id: "b"}
에 유사한 하나의 항목을 Linq 한 라이너 내가 C#에서 할 수있는)이 요소가 존재하는 배열의 인덱스를 얻을 것이다. 그래서,이 예제에서 나는 대답 1을 얻을 것이다.
이것은 어떻게 가능합니까?
I 자바 스크립트얻기 인덱스
var axes = [{id: "a"}, {id: "b"}]
의 요소의 배열을하고 난 (I 자바 스크립트에서 하나의 라이너를 원 가변
var axis = {id: "b"}
에 유사한 하나의 항목을 Linq 한 라이너 내가 C#에서 할 수있는)이 요소가 존재하는 배열의 인덱스를 얻을 것이다. 그래서,이 예제에서 나는 대답 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}));
axes
배열의 요소 중 하나와 같게 보이지만 실제로는 axes
배열의 요소가 아닌 새로운 axis
개체를 생성하려는 것으로 보입니다. 이 경우 indexOf
메서드는 배열에서 검색중인 정확한 개체를 찾으려고하기 때문에 작동하지 않습니다.
이 작업을 수행하는 방법이 있습니다. 일반적으로 한 줄 이상의 제한이 있습니다 (한 줄의 제한이 상당히 사소한 것처럼 보입니다). 그러나, 나는보기 싫어 보이지만 실제 라이브 코드보다 코드 골프 문제에 더 적합한 솔루션을 발견했습니다.
axes.indexOf(axes.filter(function(el) {if (el.id === axis.id) return true; }).shift());
을'{ id = "b"}'는 적절한 자바 스크립트가 아닙니다. 당신은'{id : "b"}'를 원합니다. – Andy
이 질문보기 http://stackoverflow.com/questions/11258077/how-to-find-index-of-an-object-by-key-and-value-in-an-javascript-array – 111