myObj = {
id: 1,
children: [
{
id: 2,
children: [
{
id: 3
}
]
},
{
id: 4,
children: [
{
id: 5,
children: [
{
id: 6,
children: [
{
id: 7,
}
]
}
]
}
]
},
]
}
以上对象如何创建功能。 在函数中,我将传递对象和id值重新调整该对象。 例如:
myFunction(myObj,4)
return:
{
id: 4,
children: [
{
id: 5,
children: [
{
id: 6,
children: [
{
id: 7,
}
]
}
]
}
}
}
myFunction(myObj,6)
return
{
id: 6,
children: [
{
id: 7,
}
]
}
myFunction(myObj,7)
return
{
id: 7,
}
答案 0 :(得分:0)
这是基于DFS
function findObject(obj, id) {
if (obj.id === id) return obj;
if (Array.isArray(obj.children)) {
for(var i = 0 ; i < obj.children.length;i++) {
var res = findObject( obj.children[i], id)
if(res){
return res;
}
}
}
return null ;
}
console.log(findObject(myObj , 6))
答案 1 :(得分:0)
我们到了。
function myFunction(obj, idx) {
if (obj.id === idx) return obj;
else if (obj.hasOwnProperty('children') && Array.isArray(obj.children)) {
for (const child of obj.children) {
const res = myFunction(child, idx);
if (res) return res;
}
} else {
return null;
}
}
console.log('MO:', myFunction(myObj, 4));
答案 2 :(得分:0)
您的解决方案将是:
let object={ id: 1, children: [ { id: 2, children: [ { id: 3 } ] }, { id: 4, children: [ { id: 5, children: [ { id: 6, children: [ { id: 7, } ] } ] } ] }, ] }
function check(obj,id){
if(obj.id==id){
return obj
}
else{
for(let el of obj.children){
if(el.id==id){
return el
}
}
}
}
const res=check(object,4);
console.log(res)
答案 3 :(得分:0)
您可以尝试
myObj = { id: 1, children: [ { id: 2, children: [ { id: 3 } ] }, { id: 4, children: [ { id: 5, children: [ { id: 6, children: [ { id: 7, } ] } ] } ] }, ] }
ob=[]
function myfunc(myObj,n){
if(myObj.id==n) return myObj
else if(myObj.children){
myObj.children.forEach(o=>{
if(o.id==n) ob.push(o)
else myfunc(o,n)
})
}
return ob[0]
}
console.log(myfunc(myObj,5))