要件:
- ネストされた配列 (多次元) 内のすべての要素を取り出し、新しい配列 (1 次元) に入れます。
- 例: [1, [3, [2, 4]]] ==> [1, 3, 2, 4]
基礎知識:
arr.concat()
構文: array.concat(other array) 関数: 他の配列と配列を結合する 戻り値: 結合された新しい配列
//准备一个原始数组
var arr=[4,6,8,2,33]
//输出一次
console.log(arr)
//执行 concat 方法
var res=arr.concat([100,200])
console.log(arr)
console.log(res) // [4, 6, 8, 2, 33, 100, 200]
ES6 実装: some と... および concat
function flatten(arr) {
while(arr.some(item => item instanceof Array)) {
arr = [].concat(...arr)
}
return arr
}
let arr = [1, 2, [3, 4], [5, 6]]
console.log(flatten(arr)); // [1, 2, 3, 4, 5, 6]
理解の難しさ: [].concat(…arr)
試してみてください
let arr = [1, 2, [3, 4], [5, 6]]
console.log([].concat(...arr)) // [1, 2, 3, 4, 5, 6]
...arr を 1 2 [3, 4] [5, 6] に分割します
Concat は [] と 1 ⇒ [1] [1] と [3, 4] ⇒ [1, 3, 4] のように値と配列を連結します。