D3.js свернуть вложенные данные
Помогите мне, пожалуйста
У меня есть файл JSON, как это.
[
{
"Paket": [
{
"farbe": "#ff0000",
"Koordinaten": [
{
"paketaufenthaltsort": "469\/31 A 1; A 3; A 4",
"y": "5",
"x": "0"
},
{
"paketaufenthaltsort": "469\/31 A 1; A 3; A 4",
"y": "5",
"x": "150"
},
{
"paketaufenthaltsort": "469\/31 A 1; A 3; A 4",
"y": "0",
"x": "150"
}
],
"Paketnummer": "11000005"
}
],
"offset": "5",
"referenzzeitraum": "1440"
}
]
и теперь я хочу иметь массив, содержащий все значения "paketaufenthaltsort".
Итак, я попробовал следующее:
console.log(data.map(function(d)
{return d.Paket.map(function(e)
{return e.Koordinaten.map(function(f) {return
f.paketaufenthaltsort;})})}));
Но он производит массив уровня 3. Результат:
[[["469/31 A 1; A 3; A 4", "469/31 A 1; A 3; A 4", "469/31 A 1; A 3; A 4"]]]
Но то, что я хочу, это:
["469/31 A 1; A 3; A 4"]
пожалуйста, помогите мне
2 ответа
Нет необходимости звонить map()
на внешних массивах, потому что вы заинтересованы только в массиве Koordinaten
, Только этот массив необходимо сопоставить с желаемым выводом, заменив содержащиеся объекты значением свойства. paketaufenthaltsort
каждого отдельного объекта. Вам просто нужно будет перебрать внешние массивы, вызвав Array.prototype.forEach()
на каждом из этих массивов:
data.forEach(function(d) {
d.Paket.forEach(function(p) {
var orte = p.Koordinaten.map(function(k) {
return k.paketaufenthaltsort;
});
console.log(orte);
});
});
Проверьте этот JSFiddle для рабочего примера.
Ты можешь использовать:
console.log(data.map(function(d){
return d.Paket.map(function(e)
{return e.Koordinaten.map(function(f) {return
f.paketaufenthaltsort;})})[0][0][0]}));
который будет обращаться к первому элементу вложенного массива.