2009-06-11 12 views
4

객체 배열에서 배열을 만들 수있는 좋은 방법 :자바 스크립트 - 나는 자바 스크립트 객체 배열이

[ 'x1', 'x2', ..., 'xn' ] 

I : 난 그냥 x 값의 새로운 배열을 만들려면

array = [ {x:'x1', y:'y1'}, {x:'x2', y:'y2'}, ... {x:'xn', y:'yn'} ] 

var newarray = []; 
for (var i = 0; i < array.length; i++){ 
    newarray.push(array[i].x); 
} 

을 ...하지만이 있는지 궁금하네요 ... for 루프에서 쉽게 할 수 좋은 하나의 라이너 jquery 또는 심지어 정기적으로 자바 스크립트를 사용하여 이렇게하는 방법?

+3

코드의 개체 부분이 잘못되었습니다. x/y 개체에는 키가 없습니다. 그냥 그걸 지적 할 줄 알았는데. –

+0

@musicfreak 나는 그의 물건에 x와 y라는 두 가지 속성이 있음을 의미한다고 생각합니다. {x : foo, y : bar} –

+0

@Gabe - 네 말이 맞아, 물건에 속성이 있다는 뜻. – mawaldne

답변

10

당신은 map으로이 작업을 수행 할 수 있습니다

var newarray = jQuery.map(array, function (item) { return item.x; }); 
0

이 많은 양의 데이터 작업을위한, 당신이 선택하고 기록을 조회 한 다음 원하는 돌아 jLinq (disclaimer: my project)을 사용할 수 있습니다 부여.

다시 말하지만 많은 개체와 쿼리로 작업하고 있지만 소스 코드를 살펴볼 수있는 몇 가지 아이디어를 얻을 수 있습니다.

3

인 ECMAScript 5는 기본 map() 방법 특징 :

FF에서
var newArray = array.map(function(value) { return value.x; }); 

, 이것은 심지어 루프보다 더 빨리해야한다,하지만 그 모든 브라우저 (오페라)에 대한 사실이 아니다; 다른 사람들은 그것을 지원하지 않습니다 (IE).

+0

그가 신경 쓰지 않는다면 (자바 스크립트 1.8을 지원하는) FF로 크로스 브라우저 솔루션을 사용하면 다음과 같이 할 수 있습니다. var arr = array.map (function (v) vx); 또는 : var arr = [v.x for each (v in array)]; – Prestaul

+0

불행히도 브라우저 간 호환성이 필요합니다. – mawaldne