2011-11-26 4 views
7

꽤 기본적인 질문입니다.하지만 그것에 대한 정보를 찾을 수 없습니다. D3를 통해객체 배열의 속성에 액세스하기

나는 어떻게 새로운 배열을 생성하고 각 요소를 누르지 않고 배열로 "번호"모든 속성의 배열에 액세스 할 수있는 CSV이

name: "whatever" 
number: "52" 

같은 각 개체의 모양을 분석?

+1

각 개체의 모양이 다음과 같은 것을 의미합니까 :'{ "name": "whatever", "number": 52}'이 개체들의 배열을 가지고 있습니까? –

+0

번호 필드에 직접 액세스 할 수 있습니다. [i] [ "number"] 또는 무언가 [i]. number ...를 사용할 수도 있습니다. 이전에 언급 한 방법으로 직접 액세스하지 않고 별도의 어레이로 사용하는 특별한 이유가 있습니까? –

답변

27

사용 :

var numbers = objects.map(function(o) { return o.number; }); 
+2

매우 깨끗합니다. 나는 받아 들인 답보다이 것을 더 좋아한다. – ericmjl

+0

Array.map()의 굉장한 사용 : –

+0

genial. 감사! – artdias90

2

JavaScript에서는 이러한 배열이 없기 때문에 사용자가 할 수 없습니다. 배열이 있다면, 각각의 객체는 소중한 작은 눈송이입니다. 물론 "숫자"값을 새 배열로 전송할 수는 있지만 확실히 새로운 배열이됩니다.

일부 툴킷 (프로토 타입 및 기능적 및 언더 코어)에는 원하는대로 정확하게 수행 할 수 있도록 설계된 "뽑아 내기"기능이 있지만 새 배열을 만들어야합니다. 그런 다음

function pluck(array, property) { 
    var i, rv = []; 

    for (i = 0; i < array.length; ++i) { 
    rv[i] = array[i][property]; 
    } 

    return rv; 
} 

:

var arrayOfNumbers = pluck(originalArray, "number"); 
+0

아마도 루프에서 호출되고 각 객체의 주어진 속성의 값을받는 콜백을 받아들이는'pluck '을 강화할 필요가 있습니다. 배열은 여전히 ​​콜백에서 반환 된 값 배열을 반환하는 데 사용될 수 있습니다. – RightSaidFred

+0

Funny, @ RightSaidFred, 나는 그저 생각하고 있었다. :-) 그런 다음 그 기능이 실제로 "map()"이라고 부르는 것이고, "map"의 관점에서 "pluck()"를 구현할 수 있다는 것을 깨달았다.() ". – Pointy

+0

매우 사실. 그것은 덜 유연한지도입니다! Duh !! – RightSaidFred

1
for (i=0; i<myArrayOfObjects.length; i++) { 
    doWhatever(myArrayOfObjects[i].number); 
} 
0

당신이 lodash 사용하는 경우, 당신은이 작업을 수행 할 수 있습니다

var numbers = _.map(originalArray, 'number')

관련 문제