У меня есть объект, который имеет дерево как структура, напримерВозвращение объекта или объекта и его родительский объект
var x = [{
id: '1',
name: 'one',
children: [{
id: '11',
name: 'oneone',
children: [{
id: '111',
name: 'oneoneone',
}]
}]
}]
, который имеет несколько слоев
с помощью функции
function findObj(obj, val) {
console.log(obj, val);
for (var i = 0; i < obj.length; i++) {
if (obj[i].id == val) {
return obj[i];
}
if (obj[i].hasOwnProperty('children') && obj[i].children.length > 0) {
var possibleResult = findObj(obj[i].children, val);
if (possibleResult) {
return {
child: possibleResult,
parent: obj[i]
}
}
}
}
}
Я отступом вернуть объект если это простой индекс в массиве x, или структура if is находится в каком-то слое. например
console.log(findObj(x ,1))
возвращает
Object {id: "1", name: "one", children: Array[1]}
using console.log(findObj(x , 11));
возвращает
{
child : {
Object {id: "11", name: "oneone", children: Array[1]}
}
parent : {
Object {id: "1", name: "one", children: Array[1]}
}
}
в следующих слоях
напримерconsole.log(findObj(x , 111))
возвращает
{
child:{
child:{},
parent:{}
}
parent:{
child:{}.
parent:{},
}
}
и так далее. Я хочу, чтобы он возвращал возвращаемый тип только первого и второго случаев. Есть ли способ, как это сделать? Я пытаюсь понять это, но не могу найти решение.
Благодаря Demo, казалось бы, хороший код, который в конце концов вернулся неверный результат
вы хотели бы получить только прямой родитель и сам узел, или все родители? –
@NinaScholz только прямой родитель и сам узел, как 2-й сценарий, если объект является основным индексом в массиве, то только объект – Darlyn