第七色在线视频,2021少妇久久久久久久久久,亚洲欧洲精品成人久久av18,亚洲国产精品特色大片观看完整版,孙宇晨将参加特朗普的晚宴

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

js將二維數(shù)組對象轉(zhuǎn)化為一維數(shù)組對象

js將二維數(shù)組對象轉(zhuǎn)化為一維數(shù)組對象

慕田峪9158850 2019-03-07 14:15:07
let arr = [  {    a: 1,    b: 2,    c: 3,    children: [      {        id: 1,        a: 1-1,        b: 1-2,        c: 1-3,      }    ]  },  {    a: 2-1,    b: 2-2,    c: 2-3,    children: []  }]要將數(shù)據(jù)格式變成同時每個對象添加一個唯一的key值function getData (arr) {arr.forEach((item, index) => {brr.push( Object.assign(item, {key: index}) )if (item.children) {  getData(item.children)}delete item.children;})return brr}getData(arr)我寫了個提取的方法 children提取出來了,但是原來的children還是存在,而且key值也不是唯一的
查看完整描述

4 回答

?
海綿寶寶撒

TA貢獻1809條經(jīng)驗 獲得超8個贊

下面一段程序供參考, 層級多深都能支持。


解釋下這里用for不用forEach的原因,for在當前循環(huán)判斷生效后,往arr添加后面添加子項,并會影響到下次循環(huán),而forEach則不然。本來for的這個特性是個缺陷,ES5 forEach的出現(xiàn)也是為了彌補這個缺陷,但是事無絕對,用得好就是優(yōu)勢。


for(let item of arr) {

    if(item.children) {

        arr = arr.concat(item.children);

        delete item.children

    }

}

console.log(arr);

如果要求保持順序, 下面代碼參考下


for(let i=0; i < arr.length ; i++) {

    if(arr[i].children) {

      arr = arr.slice(0,i+1).concat(arr[i].children,arr.slice(i+1))

      delete arr[i].children

    }

}

console.log(arr);

PS:能用循環(huán)解決的問題,就不要用遞歸,如果層次太深,內(nèi)存吃不消不說,還有可能調(diào)用棧溢出,程序崩潰。


由于題主是圖片, 測試代碼我也貼一下吧:


let arr = [

  {

    a:1,

    b:2,

    c:3,

    children: [

      {

        id:1,

        a: 1-1,

        b: 1-2,

        c: 1-3

      },

      {

        id: 2,

        a: 1-1,

        b: 1-2,

        c: 1-3,

        children: [

          {

            id:3,

            a: 1-1,

            b: 1-2,

            c: 1-3,

            children: [

              {

                id: 4,

                a: 1-1,

                b: 1-2,

                c: 1-3

              }

            ]

          }

        ]

      }

    ]

  },

  {

    a: 2-1,

    b: 2-2,

    children: []

  }

]


查看完整回答
反對 回復(fù) 2019-04-08
?
四季花海

TA貢獻1811條經(jīng)驗 獲得超5個贊

lodash了解一下


查看完整回答
反對 回復(fù) 2019-04-08
?
ABOUTYOU

TA貢獻1812條經(jīng)驗 獲得超5個贊

注意你的push是在判斷外面,依舊會執(zhí)行


查看完整回答
反對 回復(fù) 2019-04-08
  • 4 回答
  • 0 關(guān)注
  • 3248 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯(lián)系客服咨詢優(yōu)惠詳情

幫助反饋 APP下載

慕課網(wǎng)APP
您的移動學(xué)習伙伴

公眾號

掃描二維碼
關(guān)注慕課網(wǎng)微信公眾號