2016-06-06 1 views
1

죄송합니다. 너무 단순 해 보입니다. 이 구조의 데이터가 있습니다 :js 및 d3에서 지정된 키의 값을 반환합니다. 루프를해야합니까?

[ 
{key: "fred", value: {Object} }, 
{key: "sally", value: {Object} }, 
{key: "terry", value: {Object} } 
] 

key = "sally"는 어떻게 반환합니까? 분명히 루핑 (긴 배열) 이외의 다른 방법이 있을까요? 감사합니다.

+0

'ARRAY.filter (함수 (항목) {item.key를 반환 === 샐리 '}) ' – Rayon

+3

['arr.find (o => o.key = 'sally')'] (https://jsfiddle.net/tusharj/hbz0Lk6q/) – Tushar

답변

2

루핑 이외의 다른 방법은 없습니다. 그것은 숨겨져 있을지도 모르지만 모든 방법은 결국 반복 될 것입니다. 검색 작업을 여러 번 수행하려는 경우 데이터 색인을 생성 할 수 있습니다. 더 많은 메모리를 사용하지만 한 번만 반복합니다. 순수한 JS에서

(ES5) D3로

var indexed = arr.reduce(function(r, e) { 
    r[e.key] = e.value; 
    return r; 
}, {}); 

console.log(indexed["sally"]); 
console.log(indexed["fred"]); 

:

var indexed = d3.map(arr, function(d) { return d.key}); 

console.log(indexed.get("sally").value); 
console.log(indexed.get("fred").value); 
관련 문제