Благодарим вас за отзыв, так как это мой первый вопрос. Я попробую еще раз.Получение родителя JSON для узла
У меня есть объект JSON, как например:
var obj = {
"data":[
{
"data":{
"title":"title1",
"attr":{
"id":111
}
},
"children":[
{
"data":{
"title":"title2",
"attr":{
"id":222
}
},
"children":[
{
"data":{
"title":"title3",
"attr":{
"id":333
}
}
}
]
},
{
"data":{
"title":"title4",
"attr":{
"id":444
}
},
"children":[
{
"data":{
"title":"title5",
"attr":{
"id":555
}
}
}
]
}
]
}
]
};
Учитывая значение идентификатора, я хотел бы, чтобы проследить «родословную» к нему через титульных свойства следующим образом: с учетом 222, я должен получить титул 1; учитывая id 333, я должен получить title1> title 2; данный id 555, я должен получить title1> title 4. Обратите внимание, что это не родители, а братья и сестры родителей, поскольку каждый объект данных сопряжен с массивом «дочерних» объектов.
Я попытался следующие:
var x = 555;
var path = "";
function search(path, obj, target) {
for (var k in obj) {
if (obj[k] === target) {
return path + "['" + k + "']"
}
else if (typeof obj[k] === "object") {
var result = search(path + "['" + [k] + "']", obj[k], target);
if (result)
return result;
}
}
return false;
}
var path = search(path, obj, x);
console.log(path); // "['data']['0']['children']['1']['children']['0']['data']['attr']['id']"
Но я не был в состоянии получить название атрибутов, чтобы вернуться. Любая помощь будет очень признательна и благодарна за терпение каждого.
какие усилия вы сделали? –
Чтобы прослушать с предыдущим комментарием: http://stackoverflow.com/help/how-to-ask – Jan