Javascript 如何使JSON递归工作
我编写了一个常规的递归循环,但当条件满足时,它不会返回值,而是继续循环。我试图打破,但它没有停止 下面是我的代码和JSON。但是,我在控制台上看到,当id为“2”时,该值将按预期填充一次。dip搜索也正确完成,但是当我通过调用Javascript 如何使JSON递归工作,javascript,json,Javascript,Json,我编写了一个常规的递归循环,但当条件满足时,它不会返回值,而是继续循环。我试图打破,但它没有停止 下面是我的代码和JSON。但是,我在控制台上看到,当id为“2”时,该值将按预期填充一次。dip搜索也正确完成,但是当我通过调用util.iterate(json)的函数检查返回的对象时,调用函数对象的值是未定义的 util.iterate = function (obj){ for(var i in obj) { if( i === "id" &&
util.iterate(json)
的函数检查返回的对象时,调用函数对象的值是未定义的
util.iterate = function (obj){
for(var i in obj)
{
if( i === "id" && obj[i] === "2"){
console.log("test" +obj[i] );
return obj;
//break; does not work either
}
else if (typeof(obj[i])=="object"){
this.iterate(obj[i]);
}
}
}
JSON:
{
"id": "0",
"item": [{
"id": "1",
"text": "1111",
"userdata": [{
"name": "name",
"content": "BK"
}]
},
{
"id": "2",
"select": "1",
"text": "222222",
"item": [{
"id": "21",
"text": "child"
}]
},
{
"id": "3",
"text": "3333"
}]
}
我认为您缺少一个
返回值
:
else if (typeof(obj[i])=="object"){
return this.iterate(obj[i]);
}// ^^^^^^
我认为您缺少一个
返回值
:
else if (typeof(obj[i])=="object"){
return this.iterate(obj[i]);
}// ^^^^^^
如果找到结果,则需要返回结果:
util.iterate = function (obj){
for(var i in obj)
{
if( i === "id" && obj[i] === "2"){
console.log("test" +obj[i] );
//ffmodifierutil.storeObj = obj;
return obj;
//break; does not work either
}
else if (typeof(obj[i])=="object"){
var res = this.iterate(obj[i]);
if (res) return res;
}
}
}
请参阅:如果找到结果,则需要返回结果:
util.iterate = function (obj){
for(var i in obj)
{
if( i === "id" && obj[i] === "2"){
console.log("test" +obj[i] );
//ffmodifierutil.storeObj = obj;
return obj;
//break; does not work either
}
else if (typeof(obj[i])=="object"){
var res = this.iterate(obj[i]);
if (res) return res;
}
}
}
请参阅:您的json是一个字符串?只要看一眼,这是因为如果“找到”了一个项目,您不会返回任何内容。如果
this.iterate(obj[i])
返回一个您必须返回的值。您的json是一个字符串吗?只需看一眼,这是因为如果“找到”某个项,您不会返回任何内容。如果this.iterate(obj[i])代码>返回一个必须返回的值。是的,它起作用了。返回是一个问题,我认为当使用调试器时,它显示未定义。是的,它工作了。我认为当使用调试器时,返回是一个问题,它显示未定义。