行列平たいコラム

2128 ワード

配列の平準化の概念である配列の平準化とは、一つの多次元配列を一次元配列に変化させることです.
[1,[2,3,[4,5]---------[1,2,3,4,5]を実現する.
  • レデュース
  • 配列の各項目を巡回して、値が配列なら再帰的に巡回します.そうでなければconcat.
    Function flaten(arr){
    return arr.reduce((result, item)=> {
        return result.concat(Array.isArray(item) ? flatten(item) : item);
    }, []);
    }reduceは、アキュムレータとして関数を受信し、配列内の各値(左から右へ)を縮小し、最終的に1つの値として計算する配列の方法である.
    reduceは二つのパラメータを含みます.コールバック関数は、totalの初期値に伝えられます.
    //求め配列の各値を加算する和:arr.reduce((total,item)=>{/totalは以前の計算結果で、itemは配列の各値です.
    return total + item;
    }0);
  • toStering&split
  • 配列のtoStringメソッドを呼び出して、配列を文字列に変えてから、splitで分割して配列に還元します.
    Function flaten(arr){
    return arr.toString().split(',').map(function(item) {
        return Number(item);
    })
    }split分割後に形成される配列の各値は文字列であるため、1つのmap法で配列を巡回して各項目を数値型に変換する必要があります.
  • join&split
  • 上記のtoStringと同様に、joinも配列を文字列に変換することができます.
    Function flaten(arr){
    return arr.join(',').split(',').map(function(item) {
        return parseInt(item);
    })                                
    )
  • 再帰
  • 再帰的に各項目を巡回して、もし配列のためならば引き続き遍歴して、さもなくばconcat
    Function flaten(arr){
    var res = [];
    arr.map(item => {
        if(Array.isArray(item)) {
            res = res.concat(flatten(item));
        } else {
            res.push(item);
        }                
    });               
    return res;
    )
  • 拡張演算子
  • s 6の拡張演算子は二次元配列を一次元に変化させることができます.
    [].concat(…[1,2,3,[4,5])))//.[1,2,3,4,5]この結果によって遍歴をすることができます.arrに配列が含まれている場合は、一度の拡張演算子を使用します.
    Function flaten(arr){while(arr.some)}{Aray.isAray}
        arr = [].concat(...arr);
    } return arr;
    5つの方法をまとめましたが、核心は一つしかありません.
    配列arrを巡回して、arr[i]が配列であるならば、arr[i]が配列ではなく、以前の結果とconcatするまで再帰的に巡回する.
  • は、二次元配列
  • に適用される.
    let a=[[12,21],[1,2,3],[2,3,4]]
     
            function turn (arr) {
                  return [].concat.apply([],arr);
            }
            console.log(turn(aa));
    この方法は具体的な解析が必要です.https://blog.csdn.net/Hathawa...を参照してください.