在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/HTML/ js遞歸返回想要的值

js遞歸返回想要的值

  let a = [{
        "k": [{
          "k": [{
            "k": [{
              "name": "名稱4"
            },{
              "name": "名稱5"
            }],
            "name": "名稱2"
          }],
          "name": "名稱1"
        }],
        "name": "名稱0"
      }, 
      {
        "k": [{
          "k": [{
            "k": [{
              "name": "名稱44"
            }],
            "name": "名稱22"
          }],
          "name": "名稱11"
        }],
        "name": "名稱00"
      }]
      
      // 希望的結果
      ['名稱0-名稱1-名稱2-名稱3-名稱4','名稱0-名稱1-名稱2-名稱3-名稱5', '名稱00-名稱11-名稱22-名稱33-名稱44']
回答
編輯回答
枕邊人

兄弟你可以先將JSON數(shù)據(jù)轉化為 對象 var a = JSON.parse(a); , 函數(shù)體內部利用for(var k in obj)去做,但是要加個判斷條件你因為你是你序輸出的所以你的顛倒一下,這里可以利用reverse來顛倒,里面的用遞歸!

2017年9月10日 04:40
編輯回答
情未了

老哥你 a 里面沒有 3,怎么期望輸出 3。

  const flat = l1Arr => [].concat(...l1Arr)
  const iter = arr =>
    flat(arr.map(
      i => i.k
          ? iter(i.k).map(j => i.name + '-' + j)
          : i.name
    ))
  const output = iter(a)
  console.log(output)
// [ '名稱0-名稱1-名稱2-名稱4', '名稱0-名稱1-名稱2-名稱5', '名稱00-名稱11-名稱22-名稱44' ]
2018年9月9日 02:51
編輯回答
莓森
function _concat(arr){
    var resulte = [], str = ''
    !function loop(arr,str){
        arr.forEach(item => {
            var s = str + '-' + item.name; 
            Object.prototype.toString.apply(item.k) === "[object Array]" ? loop(item.k,s) : resulte.push(s.replace('-',''))
        })
    }(arr,str)
    return resulte
}
_concat(a)
2018年5月14日 23:41