我想编写一个递归函数来解析嵌套的 JSON。
这是我的 JSON 的样子:
var data = {
a: {
x: ["a", "b", "c", "d"],
},
b: {
y: ["ab"],
z: ["abc"],
},
c: ["a1", "b1"]
};
这是我写的:
var recurse = function(key, val) {
window.mappedKey = window.mappedKey || '';
if ($.type(val) === 'array') {
if ($.inArray(search, val) >= 0) {
window.mappedKey += key;
alert(window.mappedKey);
} else {
window.mappedKey = '';
}
} else {
window.mappedKey += key + '.';
$.each(val, recurse);
}
};
var search = 'ab';
$.each(data, recurse);
这里我使用全局window.mappedKey
来存储递归上的前一个键。它工作得很好,但是有什么方法可以通过在递归函数中使用局部变量来防止这种情况。
最佳答案
我不太清楚 mappedKey
的用途,所以请耐心等待。
通常,当您想要将信息从一个函数实例传递到它调用的递归实例时,可以通过将信息作为参数传递到函数中来实现。然后,该函数创建该副本的本地副本,根据需要对该副本进行修改,然后使用该副本调用自身。 (通过这种方式,它可以避免更改传递给它的原始值/列表。)当函数实例消失时,它的所有局部变量及其副本也会消失。
关于javascript - 在递归 JavaScript 函数上使用或初始化局部变量的值,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/31150860/