I want to print out a list formatted by level. What I have is an array of objects.
Each object has a level eg 0, 1, 2. 0 being the uppermost and 2 being the innermost level. I want to print out the list with a indentation to each inner level
So a list would look like this
0 1 1 2 2
What my code looks like:
for (let category of json.categories) { if ((category.level = 0)) { console.log( category.category + "https://www.example.com/" + category.seo_name ); } else if ((category.level = 1)) { console.log( " " + category.category + " " + "https://www.example.com/" + category.seo_name ); } else if ((category.level = 2)) { console.log( " " + category.category + " " + "https://www.example.com/" + category.seo_name ); } }
This does look clunky and even worse, it doesn’t work and there is no indentation.
Object example:
const json = { categories: [ { category_id: "198", category: "Appliances", seo_name: "appliances", level:0 }, { category_id: "184", category: "Industrial Appliances", seo_name: "industrial-appliances", level:1 }, ], params: { visible: false, sort_order: "asc", }, };
Advertisement
Answer
var data = [{ level: 0 }, { level: 1 }, { level: 1 }, { level: 2 }, { level: 2 }]; for (let obj of data) { let result = ""; result = ' '.repeat(obj.level * 4) + obj.level; console.log(result) }
If you want one line.
var data = [{ level: 0 }, { level: 1 }, { level: 1 }, { level: 2 }, { level: 2 }]; data.forEach(obj => console.log(' '.repeat(obj.level * 4) + obj.level))