d3.js

2016-10-22 14 views
1
で自分のキーで巣の要素にアクセス

だから私は、次の巣がありますd3.js

var myNest = [ 
    {"key":"1","values":[...]}, 
    {"key":"2","values":[...]}, 
    {"key":"3","values":[...]}, 
] 

がどのように私は自分のキーを使用して、これらの要素にアクセスすることができますか?

私は彼らのインデックス

myNext[0] //return elements with key=="1" 
myNest[1] //return elements with key=="2" 

してアクセスすることができます知っている。しかし、私がやりたいことは次のとおりです。

myNest["1"] //return elements with key=="1" 
myNest["2"] //return elements with key=="2" 

おかげ

答えて

4

利用map()代わりのentries()あなたの巣を構築。あなたがmap()を使用する代わりに、場合

var products = [{ 
 
    "id": 1, 
 
    "name": "Cat Hat", 
 
    "price": 49 
 
}, { 
 
    "id": 2, 
 
    "name": "Unicorn Boots", 
 
    "price": 139 
 
}, { 
 
    "id": 3, 
 
    "name": "Pink Woolly Jumper", 
 
    "price": 34 
 
}]; 
 

 

 
var productsById = d3.nest() 
 
    .key(function(p) { 
 
    return p.id; 
 
    }) 
 
    .entries(products); 
 

 
console.log(productsById)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

:あなたはおそらくこれに似た何かをした

var products = [{ 
 
    "id": 1, 
 
    "name": "Cat Hat", 
 
    "price": 49 
 
}, { 
 
    "id": 2, 
 
    "name": "Unicorn Boots", 
 
    "price": 139 
 
}, { 
 
    "id": 3, 
 
    "name": "Pink Woolly Jumper", 
 
    "price": 34 
 
}]; 
 

 

 
var productsById = d3.nest() 
 
    .key(function(p) { 
 
    return p.id; 
 
    }) 
 
    .map(products); 
 

 
console.log(productsById)
<script src="https://cdnjs.cloudflare.com/ajax/libs/d3/3.4.11/d3.min.js"></script>

あなたはでオブジェクトにアクセスすることができますマップを取得しますそれらのキーを直接、例えばこの例ではproductsById["2"]である。

1

あなたのオブジェクトのキーがオブジェクトitselftのキーであるハッシュテーブルを私たちに教えてください。 ES6のために

私は地図を使用することをお勧め:

var myNest = [{ key: "1", values: [1, 4] }, { key: "2", values: [2, 5] }, { key: "3", values: [3, 6] }], 
 
    hash = Object.create(null); 
 

 
myNest.forEach(function (a) { 
 
    hash[a.key] = a; 
 
}); 
 

 
console.log(hash['2']);