亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

JS怎么實現數組扁平化

發布時間:2023-04-20 11:43:34 來源:億速云 閱讀:104 作者:iii 欄目:開發技術

今天小編給大家分享一下JS怎么實現數組扁平化的相關知識點,內容詳細,邏輯清晰,相信大部分人都還太了解這方面的知識,所以分享這篇文章給大家參考一下,希望大家閱讀完這篇文章后有所收獲,下面我們一起來了解一下吧。

過程

什么是扁平化

數組扁平化指的是:將一個多層嵌套的數組,處理成只有一層的數組,如下代碼:

const arr = [
  { id:1,title:"文章管理",children:[
      { id:2,title:"文章列表",children:[
          { id:3,title:"文章新增" },
          { id:4,title:"文章刪除" },
      ] }
  ] }
]

// 轉換之后
[
  { id:1,title:"文章管理" },
  { id:2,title:"文章列表" },
  { id:3,title:"文章新增" },
  { id:4,title:"文章刪除" },
]

通過上面的結果我們就可以很方便地拿出所有的 id

方法一:flat

flat:這是ES6Array對象新增的一個方法,可以很方便的把多維數組轉換為一維數組。MDN文檔參考此處。

JS怎么實現數組扁平化

flat方法的參數是深度,默認是 1,表示展開幾層。

假設我們是 三維數組 ,那展開的深度就應該是 3-1

JS怎么實現數組扁平化

這樣做確實有些麻煩,JavaScript 也貼心地為我們提供了 Infinity,可在此處查看介紹。

JS怎么實現數組扁平化

所以我們可以將 arr.flat(2) 修改為 arr.flat(Infinity)

JS怎么實現數組扁平化

但是使用 flat 存在個 弊端 ,當我們 數組項 是 對象,且 無限下鉆 時,就不能很好的幫我們展開了,這個時候就引入第二種方法。

方法二:遞歸

遞歸:是一種 算法,表示在一個 函數 內 return自身 ,當滿足 指定條件 時 return值 跳出循環。

這里我們定義一個遞歸方法 flatArr,方法接收源數組 data 和 子集key childField

function flatArr(data = [],childField = ""){}

定義一個結果集 result ,并最終返回:

function flatArr(data = [],childField = ""){
  const result = [];
  
  return result;
}

接下來定義一個遞歸方法 deepFn,接收一個數組參數 arr ,并循環 arr 執行遞歸,將循環出來的每一項pushresult,并調用這個遞歸方法 :

function flatArr(data = [],childField = ""){
  const result = [];
  const deepFn = (arr) => {
    arr.forEach(e => {
      if(e[childField] && e[childField].length > 0 ){
        deepFn(e[childField])
      }else{
        result.push(e)
      }
    })
  }
  deepFn(data);
  return result;
}

至此,這個遞歸方法就這樣實現了,接下來我們測試一下:

JS怎么實現數組扁平化

以上就是“JS怎么實現數組扁平化”這篇文章的所有內容,感謝各位的閱讀!相信大家閱讀完這篇文章都有很大的收獲,小編每天都會為大家更新不同的知識,如果還想學習更多的知識,請關注億速云行業資訊頻道。

向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

js
AI

安多县| 读书| 秦皇岛市| 赤壁市| 建阳市| 清新县| 三台县| 巴林右旗| 如东县| 当雄县| 余庆县| 广灵县| 遵义县| 涞源县| 丹凤县| 江阴市| 灵宝市| 恭城| 大石桥市| 长泰县| 兴宁市| 云梦县| 汉寿县| 亚东县| 汶川县| 化州市| 连州市| 肥东县| 喀喇沁旗| 昂仁县| 张家港市| 鄂尔多斯市| 六安市| 金堂县| 明水县| 静安区| 舞钢市| 调兵山市| 德钦县| 常州市| 连州市|