2017-03-02 2 views
1
var myArray = [{ 
    title: "Title 1", 
    children: [{ 
     title: "Title 1.1", 
     children: [{ 
     title: "Title 1.1.1" 
     }] 
    }, { 
     title: "Title 1.2", 
     children: [] 
    }] 
    }, 
    { 
    title: "Title 2", 
    children: [{ 
     title: "Title 2.1", 
     children: [{ 
     title: "Title 2.1.1" 
     }] 
    }, { 
     title: "Title 2.2", 
     children: [{ 
     title: "Title 2.2.1" 
     }] 
    }] 
    } 
]; 

だから私はこれに似た配列を持っています。 タイトルはランダムですが、私が取得したいことは、私は、これは再帰的とlodashソリューションが高く評価されるだろうようにしたいと思いレベル例えばJavascriptツリーレベル/レベル

{ title: 'Title 2.2 (or any othe random title)', level: '2.2', children:[...]} 

です。おかげさまで

答えて

1

反復的で再帰的なアプローチを使用できます。

function addLevel(array, levels) { 
 
    levels = levels || []; 
 
    array.forEach(function (o, i) { 
 
     o.level = levels.concat(i + 1).join('.'); 
 
     if (Array.isArray(o.children)) { 
 
      addLevel(o.children, levels.concat(i + 1));; 
 
     } 
 
    }); 
 
} 
 

 
var myArray = [{ title: "Title 1", children: [{ title: "Title 1.1", children: [{ title: "Title 1.1.1" }] }, { title: "Title 1.2", children: [] }] }, { title: "Title 2", children: [{ title: "Title 2.1", children: [{ title: "Title 2.1.1" }] }, { title: "Title 2.2", children: [{ title: "Title 2.2.1" }] }] }]; 
 

 
addLevel(myArray); 
 

 
console.log(myArray);
.as-console-wrapper { max-height: 100% !important; top: 0; }