2014-03-01 5 views
1

배열의 여러 요소에 대한 특성 값을 배열로 가져 오려고하지만 간결한 방법을 찾을 수 없습니다.여러 요소의 특성 값 가져 오기

예를 들어, svg 요소에는 circle 초가 있고 그 중 모두를 cx 속성으로 가져와야합니다.

내가 시도 :

var cxs = d3.select("svg") 
    .selectAll("circle") 
    .attr("cx"); 

그러나 결과는 하나의 원의 ("523.4777243042896"을 말한다) 만 값이고, 나는 모든 cx의 필요합니다. 원의 좌표는 복잡한 시뮬레이션 알고리즘으로 계산되므로 원본 데이터를 사용하여 원을 얻을 수 없습니다. 모든 값을 얻는 좋은 방법이 있습니까?

감사합니다.

+1

를 사용할 수 있도록합니다.는 selectAll (데이터 배열에 키 - 값 쌍이 있다고 가정하면'.attr ("cx", function (d) {return dx;})'를 사용할 수 있습니다. x : someValue를 좋아한다. 어떤 코드도 보지 않고, 이것은 나의 추측 일 것입니다. – FernOfTheAndes

+0

네, 실제로이 솔루션은 x3과 y 속성을 해당 데이텀에 바인드하는 d3.layout.force를 사용하고 있기 때문에 제 경우에는 작동합니다. 그러나 일반적으로 이것은 잘 작동하지 않습니다. – bicycle1885

답변

1

정확하게 이해하고 있다면 cx 값의 목록을 얻고 싶습니다. 그래서, 당신이 할 수있는 한가지 방법이 있습니다.

var cxs = []; 
d3.selectAll("circle")[0].forEach(function(circle) { 
    cxs.push(circle.getAttribute('cx')); 
}); 

는 데이터에 (당신이 언급 한 배열)이 결합하면 조금 짧은 당신이 ("SVG를") '라고 d3.select map()

var cxs = d3.selectAll("circle")[0].map(function(circle) { 
    return circle.getAttribute('cx'); 
}); 
+0

이 솔루션은 현실적인 해결 방법 인 것 같습니다. 고마워요! – bicycle1885

관련 문제