gpt4 book ai didi

javascript - 在javascript中生成深层对象中所有属性链的数组

转载 作者:行者123 更新时间:2023-11-30 06:04:16 25 4
gpt4 key购买 nike

大家好,读了很久,但第一次张贴。在过去的几天里,我一直在尝试解决一个逻辑问题,但运气不佳,希望有人能帮助我解决递归逻辑问题。

基本上我想生成一个数组,其中包含 javascript 中对象的所有嵌套属性的数组。例如:

{a:'b',c:{d:{e:'f',g:'h'}},i:'k'}

应该返回

[['a'],['c','d','e'],['c','d','g'],['i']]

我尝试过使用各种 for/while 循环进行递归,但无可救药地迷失在逻辑中:/

如有任何帮助,我们将不胜感激。如果有更好的方法来描述我的问题,请告诉我,我会更新这篇文章。

最佳答案

我这样做的方法是编写递归的“链构建器”,以便它接受回调,以便回调可以构建外部列表。

  function findChains(obj) {
function chainFrom(chain, obj, atEnd) {
if (typeof obj !== 'object') atEnd(chain);
else {
for (var pn in obj) {
if (obj.hasOwnProperty(pn)) {
chain.push(pn);
chainFrom(chain, obj[pn], atEnd);
--chain.length;
}
}
}
}
var rv = [];
chainFrom([], obj, function(chain) {
rv.push(chain.slice(0));
});
return rv;
}

可能这有点矫枉过正,回调可以只是硬编码而不是作为参数传入(和向下)。

关于javascript - 在javascript中生成深层对象中所有属性链的数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6143492/

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