57814
```

    const data = {
        list: [
            {
                item: [1 ,2]
            },
            {
                item: [3 ,4]
            },
             {
                item: [5 ,6]
            }
        ]
    }
    
```

このような json データから１次元配列

```

    [ 1, 2, 3, 4, 5, 6 ]
    
```

を得たいのですが、どのように記述するのがよいでしょうか。  
出来るだけループを使用したくないのですが、それは難しいでしょうか。

ちなみに

```

    const array = data.list.map(function(a) {return a.item})
    
```

とした場合は、以下のように入れ子の配列になってしまいました。

```

    [ [ 1, 2 ], [ 3, 4 ], [ 5, 6 ] ]
    
```
CC BY-SA 4.0
2019-09-03T11:27:10.473
57809
2019-09-03T12:58:28.537
2019-09-03T11:38:22.437
3925
3925
question
javascript json
入れ子になった json から１次元配列を生成する
英語版Stackoverflowに配列をflattanする方法についての回答で`Array.prototype.concat`が使われておりました。

```

    const array = data.list.map(function(a) {return a.item})
    Array.prototype.concat.apply([], array)
    
```

でいかがでしょうか？

また、まだECMAScriptの標準にはなっていませんが`flat`という関数を使って

```

    array.flat(1);
    
```

という書き方もできるようです。

<https://stackoverflow.com/a/10865042/1536527>
CC BY-SA 4.0
2019-09-03T12:43:17.577
57812
2019-09-03T12:43:17.577
3271
57809
answer
もし `flatMap` が使える環境ならば、`flatMap` を使うとシンプルに記述できます。

```

    const array = data.list.flatMap(function(a) {return a.item});
    
```

`flat` が使えるならば、ネストした配列をフラットにすることもできます。

```

    const array = data.list.map(function(a) {return a.item}).flat()
    
```

また `reduce` と `concat` を使って記述することも可能です。

```

    const array = data.list.reduce((acc, x) => acc.concat(x.item), [])
    
```

  * 参考 
    * <https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/flatMap>
    * <https://developer.mozilla.org/ja/docs/Web/JavaScript/Reference/Global_Objects/Array/flat>
CC BY-SA 4.0
2019-09-03T12:58:28.537
57814
2019-09-03T12:58:28.537
32959
57809
answer