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]}));

который будет обращаться к первому элементу вложенного массива.

Другие вопросы по тегам