Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Welcome To Ask or Share your Answers For Others

Categories

0 votes
482 views
in Technique[技术] by (71.8m points)

递归有什么简便方法,可以给每一层增加一个属性(标记第几层),如下图代码

问题

递归有什么简便方法,可以给每一层增加一个属性(标记第几层),如下图代码

<!DOCTYPE html>
<html lang="en">

<head>
  <meta charset="UTF-8">
  <meta name="viewport" content="width=device-width, initial-scale=1.0">
  <title>Document</title>
</head>

<body>
  <script>
    var data = [{
      //第一层:index=1
      id: '1',
      name: 'a',
      children: [{
         //第二层:index=2
        id: '1-1',
        name: 'aa'
      }, {
        //第二层:index=2
        id: '1-2',
        name: 'ab',
        children: [{
          //第三层:index=3
          id: '1-2-1',
          name: 'aba',
        }]
      }]
    }, {
     //第一层:index=1
      id: '2',
      name: 'b',
    }]
    function forData(data) {
      data.forEach((item, index) => {
        item.index = index + 1;
        if (item.children) {
          forData(item.children)
        }
      })
    }
    forData(data)
    console.table('data', data)
  </script>
</body>

</html>

层数如下图绿色数字

image.png


与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
Welcome To Ask or Share your Answers For Others

1 Reply

0 votes
by (71.8m points)

你就把level传到递归函数就可以了,大概思路如下(没测试~)

function setLevel (list, level = 1) {
  list && list.forEach(item => {
    item.index = level
    setLevel(item.children, level + 1)
  })
}

与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…
OGeek|极客中国-欢迎来到极客的世界,一个免费开放的程序员编程交流平台!开放,进步,分享!让技术改变生活,让极客改变未来! Welcome to OGeek Q&A Community for programmer and developer-Open, Learning and Share
Click Here to Ask a Question

...