Javascript 这个递归函数有什么问题?
我试图计算对象中的字符串数量,包括使用递归的嵌套对象和数组中的字符串。为什么我得到的是3分而不是7分Javascript 这个递归函数有什么问题?,javascript,function,recursion,Javascript,Function,Recursion,我试图计算对象中的字符串数量,包括使用递归的嵌套对象和数组中的字符串。为什么我得到的是3分而不是7分 函数strCount(对象,计数=0){ for(obj中的var键){ 如果(对象的类型[键]=“对象”){ strCount(对象[键],计数); }else if(对象的类型[键]='string'){ 计数++; } } 返回计数; } var myobj={ 第一条:“1”, 第二:“2”, 5:‘sd’, 第三:错, 第四:[“随时”,2,3,4], 第五:空, 第六:未定义, 第
函数strCount(对象,计数=0){
for(obj中的var键){
如果(对象的类型[键]=“对象”){
strCount(对象[键],计数);
}else if(对象的类型[键]='string'){
计数++;
}
}
返回计数;
}
var myobj={
第一条:“1”,
第二:“2”,
5:‘sd’,
第三:错,
第四:[“随时”,2,3,4],
第五:空,
第六:未定义,
第七名:{ana:'hell',did:5,boo:'foo',har:['kill',5]}
};
警报(strCount(myobj))
不要忘记将递归调用的结果添加到计数中
:
功能strCount(obj){
var计数=0;
for(obj中的var键){
如果(对象的类型[键]=“对象”){
计数+=strCount(对象[键]);
}else if(对象的类型[键]='string'){
计数++;
}
}
返回计数;
}
var myobj={第一:“1”,第二:“2”,5:'sd',第三:false,第四:[“随时”,2,3,4],第五:null,第六:未定义,第七:{ana:'hell',did:5,boo:'foo',har:['kill',5]};
警报(strCount(myobj))
不要忘记将递归调用的结果添加到计数中
:
功能strCount(obj){
var计数=0;
for(obj中的var键){
如果(对象的类型[键]=“对象”){
计数+=strCount(对象[键]);
}else if(对象的类型[键]='string'){
计数++;
}
}
返回计数;
}
var myobj={第一:“1”,第二:“2”,5:'sd',第三:false,第四:[“随时”,2,3,4],第五:null,第六:未定义,第七:{ana:'hell',did:5,boo:'foo',har:['kill',5]};
警报(strCount(myobj))代码>您应该将第四行更改为count=strCount(obj[key],count)代码>
函数strCount(对象,计数=0){
for(obj中的var键){
如果(对象的类型[键]=“对象”){
计数=strCount(对象[键],计数);
}else if(对象的类型[键]='string'){
计数++;
}
}
返回计数;
}
var myobj={
第一条:“1”,
第二:“2”,
5:‘sd’,
第三:错,
第四:[“随时”,2,3,4],
第五:空,
第六:未定义,
第七:{
安娜:“见鬼”,
日期:5,
嘘:“福”,
哈尔:[“杀死”,5]
}
};
警报(strCount(myobj))代码>您应该将第四行更改为count=strCount(obj[key],count)代码>
函数strCount(对象,计数=0){
for(obj中的var键){
如果(对象的类型[键]=“对象”){
计数=strCount(对象[键],计数);
}else if(对象的类型[键]='string'){
计数++;
}
}
返回计数;
}
var myobj={
第一条:“1”,
第二:“2”,
5:‘sd’,
第三:错,
第四:[“随时”,2,3,4],
第五:空,
第六:未定义,
第七:{
安娜:“见鬼”,
日期:5,
嘘:“福”,
哈尔:[“杀死”,5]
}
};
警报(strCount(myobj))
您正在递归调用strCount
,但忽略其返回值。如果您这样想,它不会增加调用方范围内的count
变量。每个调用都有自己的count
。您递归调用strCount
,但忽略其返回值。如果您这样想,它不会增加调用方范围内的count
变量。每个调用都有自己的计数
。