gpt4 book ai didi

Javascript无限循环遍历Javascript对象

转载 作者:行者123 更新时间:2023-12-03 12:09:48 24 4
gpt4 key购买 nike

这个过程中,遍历 Javascript 对象会导致无限循环。如果我在初始化时而不是在按键事件上调用它,相同的代码似乎可以工作...感谢您的帮助!

<form>
<input id="searchBox" name="searchText" placeholder="Search" onkeyup="search()">
</form>

<script src="http://d3js.org/d3.v3.min.js"></script>
<script>


var searchText = ""

function search(){
searchText = document.getElementById('searchBox').value;
traverse(jsonData,process);
}

//traverse JSON object
function traverse(json,func) {
for (var i in json) {
func.apply(this,[i,json[i]]);
if (json[i] !== null && typeof(json[i])=="object") {
console.log("STEP IN");
traverse(json[i],func);
}
}
}

最佳答案

如果对象是递归的,则很容易导致无限循环:

jsonData = {};
jsonData.x = jsonData;

您可以使用weakmaps来跟踪您访问过的节点并避免递归。

var map = new WeakMap();

function traverse(data, func) {
if (data != null || "object" !== typeof data || map.get(data)) { return; }

map.set(data, true);

for (var i in data) {
func.apply(this, [i, data[i]]);
console.log("STEP IN");
traverse(data[i], func);
}
}

}

关于Javascript无限循环遍历Javascript对象,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/25007599/

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