JS による配列の平坦化の実装 (ES6 実装)---例 + 難易度分析

要件:

  • ネストされた配列 (多次元) 内のすべての要素を取り出し、新しい配列 (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] のように値と配列を連結します。

 

おすすめ

転載: blog.csdn.net/CaptainDrake/article/details/132523274