91超碰碰碰碰久久久久久综合_超碰av人澡人澡人澡人澡人掠_国产黄大片在线观看画质优化_txt小说免费全本

溫馨提示×

溫馨提示×

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

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

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

麻栗坡县| 基隆市| 阳谷县| 贵溪市| 肃宁县| 老河口市| 防城港市| 土默特右旗| 阜南县| 兖州市| 彝良县| 盐边县| 册亨县| 通江县| 安化县| 平湖市| 开鲁县| 威宁| 海晏县| 那坡县| 沾化县| 额济纳旗| 丹巴县| 额尔古纳市| 高邑县| 涟源市| 武安市| 郴州市| 张掖市| 五莲县| 攀枝花市| 天长市| 普安县| 双城市| 安远县| 区。| 龙岩市| 宁陕县| 郸城县| 班戈县| 田林县|