2014-12-05 2 views
0

자바의 객체 배열 중 하나의 속성 만 배열을 반환하는 방법을 찾고 있습니다. 특히, 나는 다음과 같은 사양을 형식의 배열 구조를 가지고있는 경우 :자바의 객체 배열에서 단일 속성의 배열을 반환

[ 
    { prop1: "someVar", prop2: "anotherVar" }, 
    { prop1: "foo", prop2: "bar" }, 
    { prop1: "abc", prop2: "def" } 
] 

가 어떻게 그냥 prop1 특성의 배열을 반환 할 수 있습니다 ? 다음과 같이 :

[ "someVar", "foo", "abc" ] 

나는 간단하게 사용할 수 있다고 생각했습니다. 그래서 같은 내 원래의 배열에 filter에있어서,

self.myArray.filter(function (el) { 
     return el.prop1; 
    }); 

하지만 그건 분명히 작동하지 않습니다 ... 아이디어?

답변

6

시도해보십시오. 경우 prop1에서

var newArray = [ 
    { prop1: "someVar", prop2: "anotherVar" }, 
    { prop1: "foo", prop2: "bar" }, 
    { prop1: "abc", prop2: "def" } 
].map(function(item) { 
    return item.prop1; 
}); 

는 다음과 같은 기능을 가질 수 동적;

function extractProperty(array, prop) { //you may want to give it a better name 
    return array.map(function(item) { 
     return item[prop]; 
    }); 
} 

다음과 같이 사용할 수 있습니다.

var array = extractProperty([ 
    { prop1: "someVar", prop2: "anotherVar" }, 
    { prop1: "foo", prop2: "bar" }, 
    { prop1: "abc", prop2: "def" } 
], 'prop1'); 
+0

꼭 연산 생각은, "prop1"(예를 들어, 어떤 속성) – Madbreaks

+0

@Madbreaks 동적 될 나의 편집에서 봐 가지고 싶어 당신이 무엇을 의미하는 것이 무엇입니까? – renatoargh

+0

예 - 정확합니다. 나는 똑같은 좋은 대답이었던 나의 대답을 삭제했다. +1 – Madbreaks

관련 문제