У меня есть динамически созданный объект JavaScript, который состоит из вложенных объектов и массивов. Я не смог найти подходящий способ перечислить все вложенные объекты, поскольку этот конкретный объект создается динамически.Как пройти через этот вложенный объект?
Вот объект:
var tagdata = {
"Sentence": [{
"NP": [{
"NMP": "cat"
}, {
"NMP": "dog"
}]
}, {
"VP": [{
"KPD": "tree"
}, {
"NP": [{
"NMP": "ball"
}, {
"NMP": "bat"
}]
},{
"NP": [{
"NMP": "ground"
}, {
"NMP": "time"
}]
}]
}]
};
Выход я требую выглядит следующим образом:
[{ key: 1, text: 'Sentence' },
{ key: 2, text: 'NP', parent: 1 },
{ key: 3, text: 'VP', parent: 1 },
{ key: 4, text: 'NMP', parent: 2 },
{ key: 5, text: 'NMP', parent: 2 },
{ key: 6, text: 'KPD', parent: 3 },
{ key: 7, text: 'NP', parent: 3 },
{ key: 8, text: 'NP', parent: 3 },
{ key: 9, text: 'cat', parent: 4 },
{ key: 10, text: 'dog', parent: 5 },
{ key: 11, text: 'tree', parent: 6 },
{ key: 12, text: 'NMP', parent: 7 },
{ key: 13, text: 'NMP', parent: 7 },
{ key: 14, text: 'NMP', parent: 8 },
{ key: 15, text: 'NMP', parent: 8 },
{ key: 16, text: 'ball', parent: 12},
{ key: 17, text: 'bat', parent: 13},
{ key: 18, text: 'ground', parent: 14},
{ key: 19, text: 'time', parent: 15},]
Эти данные будут использоваться в дереве, так что порядок может быть различным, но key: родительские отношения должны поддерживаться. Вот код, я попытался с:
let newtags=[{key:1,text:'Sentence'}];
tagdata["Sentence"].map((elem,x) => {
newtags.push({key:x,text:Object.keys(elem)[0],parent:x});
if(Object.keys(elem)[0].length !== 0){
var y=x+1;
newtags.push({key:y,text:Object.values(elem)[0][x],parent:y});
}
});
console.log(newtags);
Спасибо, что это сработало как шарм. btw ive добавил новый атрибут json вот так: {key: ++ key, fill: blueA400, stroke: "# 4d90fe", текст: obj, parent} , так как его созданный динамически ive решил вызвать функцию внутри json "fill: this.fillcolor (tagname)", но когда я вызываю эту функцию, это говорит, что fillcolor не определен. любая причина, почему я получаю это ?. функция работает довольно хорошо вне json.эта функция используется для возврата цвета в зависимости от имени узла – TRomesh
Трудно сказать, что не так с вашим дополнением. Как вы можете видеть, комментарии не идеальны для того, чтобы говорить о коде. Убедитесь, что контекст действительно таков, что 'это' то, что вы думаете. Не стесняйтесь создавать новый вопрос. Если вы хотите, вы можете сослаться на него, и я могу посмотреть. – trincot