gpt4 book ai didi

javascript - React-Native - 通过嵌套对象崩溃递归

转载 作者:行者123 更新时间:2023-11-30 20:47:16 24 4
gpt4 key购买 nike

我从 ( Iterate through Nested JavaScript Objects ) 中获取了以下函数,并在一个普通的 CRNA 项目中实现:


var findObjectByLabel = function(obj, label) {
如果(obj.label === label){ return obj; }
对于(obj 中的变量 i){
如果(obj.hasOwnProperty(i)){
var foundLabel = findObjectByLabel(obj[i], label);
如果(找到的标签){ 返回找到的标签; }
}
}
返回空值;
};

当我尝试在构造函数或任何生命周期方法中执行此代码时,应用程序因超出最大调用堆栈大小而崩溃。这在RN中是不允许的吗?我必须将其转换为迭代版本吗?

最佳答案

如果您为上述功能考虑以下场景,您就会明白它为什么会出错:

type Node = { link: Node; value: number; };
const x: Node = { link: null, value: 0 };
const y: Node = { link: x, value: 1 };
x.link = y;

findObjectByLabel(x, 'foo');

因为存在循环引用,您的递归将无限进行,您将达到最大调用堆栈大小。

您的对象结构中可能存在某种循环引用,使您遇到此问题。

如果你能保证所有命中的对象都有一个非空的 label 并且标签是唯一的,你就可以跟踪 seenLabels 而不是递归到一个对象中您已经看到了标签。

关于javascript - React-Native - 通过嵌套对象崩溃递归,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48573769/

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