我有字符串101000或1010100,其中我尝试使用功能remove data递归替换100。在将字符串替换为值100时,函数removeata应该在字符串为空时返回“是”,而在字符串非空时返回“否”。
它对于字符串1010100正常工作。它返回“ no”,但对于字符串101000变为空则不返回。
console.log(removedata("1010100"));
console.log(removedata("101000"));
function removedata(data) {
data = data.replace("100", "");
if (data.length == 0) {
return "yes";
} else {
if (data.indexOf("100") > -1 && data.length > 0) {
removedata(data);
} else {
return "no";
}
}
}
1010100时返回否 101000时返回undefined
答案 0 :(得分:3)
您需要return
递归调用:
console.log(removedata("1010100"));
console.log(removedata("101000"));
function removedata(data) {
data = data.replace("100", "");
if (data.length == 0) {
return "yes";
} else {
if (data.indexOf("100") > -1 && data.length > 0) {
return removedata(data);
} else {
return "no";
}
}
}
现在,由于所有yes
已被删除且字符串为空,因此它为第二个返回100
。
答案 1 :(得分:0)
function removedata(data) {
data = data.replace("100", "");
if (data.length == 0) {
return "yes";
} else {
if (data.indexOf("100") > -1 && data.length > 0) {
removedata(data); // This branch does not return anything
} else {
return "no";
}
}
}