gpt4 book ai didi

javascript - 根据深度值在对象树中搜索

转载 作者:行者123 更新时间:2023-11-30 19:45:26 25 4
gpt4 key购买 nike

我有一个对象,它有其他对象的随机键和值,其中树的最后一个深度有一个 id。

我想创建一个函数,它接受一个字符串和深度来根据这两个值获取子对象

例如,我有这样的数据:

var treeObj = {
"random key1": {
"random key11": {
"random key11": {
"random key11": {
id: 25,
count: 364
},
"random key12": {
id: 52,
count: 644
},
"random key13": {
id: 5,
count: 664
},
"random key14": {
id: 5,
count: 624
}
}
},
"random key2": {
"random key21": {
"random key21": {
id: 56,
count: 64
}
},
"random key22": {
"random key221": {
id: 56,
count: 64
},
"random key222": {
id: 35,
count: 64
}
},
}
},
"other random key":{
"different random key":{
"different random key": {
"different random key1": {
id: 75,
count: 664
},
"different random key2": {
id: 57,
count: 624
},
"different random key3": {
id: 50,
count: 654
},
},
},
"different random key2":{
"different random key2": {
"different random key21": {
id: 15,
count: 64
},
},
}
}
}

我想要的是这样的功能:

get_child_obj('随机key1', 0)

应该返回这个:

{
"random key11": {
"random key11": {
"random key11": {
id: 25,
count: 364
},
"random key12": {
id: 52,
count: 644
},
"random key13": {
id: 5,
count: 664
},
"random key14": {
id: 5,
count: 624
}
}
},
"random key2": {
"random key21": {
"random key21": {
id: 56,
count: 64
}
},
"random key22": {
"random key221": {
id: 56,
count: 64
},
"random key222": {
id: 35,
count: 64
}
},
}
}

还有这样一个函数:

get_child_obj('different random key', 2)

应该返回这个:

{
"different random key1": {
id: 75,
count: 664
},
"different random key2": {
id: 57,
count: 624
},
"different random key3": {
id: 50,
count: 654
},
}

还有这样一个函数:

get_child_obj('random key12', 3)

应该返回这个:

{
id: 52,
count: 644
}

请注意,对于每个深度, key 都是唯一的。

最佳答案

您可以采用递归方法,将对象交给搜索并递减每个嵌套级别的深度。

如果 depth 为零,则返回所需属性,否则迭代对象的值并检查嵌套对象是否包含所需属性。

function getChild(object, key, depth) {
var result;
return depth
? (Object.values(object).some(v => result = getChild(v, key, depth - 1)), result)
: object[key];
}

var tree = { "random key1": { "random key11": { "random key11": { "random key11": { id: 25, count: 364 }, "random key12": { id: 52, count: 644 }, "random key13": { id: 5, count: 664 }, "random key14": { id: 5, count: 624 } } }, "random key2": { "random key21": { "random key21": { id: 56, count: 64 } }, "random key22": { "random key221": { id: 56, count: 64 }, "random key222": { id: 35, count: 64 } } } }, "other random key": { "different random key": { "different random key": { "different random key1": { id: 75, count: 664 }, "different random key2": { id: 57, count: 624 }, "different random key3": { id: 50, count: 654 } } }, "different random key2": { "different random key2": { "different random key21": { id: 15, count: 64 } } } } };

console.log(getChild(tree, 'random key1', 0));
console.log(getChild(tree, 'different random key', 2));
console.log(getChild(tree, 'random key12', 3));
.as-console-wrapper { max-height: 100% !important; top: 0; }

关于javascript - 根据深度值在对象树中搜索,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54986456/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com