将以下的DOM结构转化为所示JSON格式

输出见控制台

      DOM结构
      
        <div>
          <span>
            <a></a>
          </span>
          <span>
            <a></a>
            <a></a>
          </span>
        </div>
      

      JSON格式
      
        {
          tag: 'DIV',
          children: [
            {
              tag: 'SPAN',
              children: [
                { tag: 'A', children: [] }
              ]
            },
            {
              tag: 'SPAN',
              children: [
                { tag: 'A', children: [] },
                { tag: 'A', children: [] }
              ]
            }
          ]
        }
      
    

解一:注意DOM结构需要去除所有空格,否则会产生多余Text节点。

      
        function dom2json(dom, json = {}) {
          json.tag = dom.tagName;
          json.children = [];
          dom.childNodes.forEach(child => json.children.push(dom2json(child)));
          return obj;
        }
      
    

References

https://juejin.cn/post/6844904122559250440

马特·弗里斯比. JavaScript高级程序设计:第4版,P419.