JSFiddle - React, Tailwind, and code Playground
by Luiz Silva
HTML
<textarea></textarea>
JavaScript
objTeste = [
{
"id": "03",
"nome": "teste03",
"pai": {
"id": "02",
"nome": "teste02",
"pai": {
"id": "01",
"nome": "teste01"
}
}
},
{
"id": "02",
"nome": "teste02",
"pai": {
"id": "01",
"nome": "teste01"
}
},
{
"id": "01",
"nome": "teste01"
},
{
"id": "04",
"nome": "teste04"
}
];
function normalizar(vetor) {
//construir um mapa com elementos que são pai
var mapa = {};
function indexarItem(item) {
if ('pai' in item) {
mapa[item['pai']['id']] = item['id'];
indexarItem(item['pai']);
}
}
vetor.forEach(indexarItem);
//remover elementos do vetor que sejam pai
function naoEhPai(item) {
return !(item['id'] in mapa);
}
return vetor.filter(naoEhPai);
}
//exibe resultado
var resultado = normalizar(objTeste);
document.querySelector('textarea').value = JSON.stringify(resultado, null, '\t');