【发布时间】:2018-07-19 16:53:16
【问题描述】:
这里是问题陈述:
编写一个名为 firstNonRepeatingLetter† 的函数,该函数接受字符串输入,并返回字符串中不重复的第一个字符。
例如,如果输入 'stress',函数应该返回 't',因为字母 t 在字符串中只出现一次,并且在字符串中首先出现。
作为一个额外的挑战,大写和小写字母被认为是相同的字符,但函数应该返回首字母的正确大小写。例如,输入“sTreSS”应返回“T”。
下面是我的代码,它返回未定义。我无法捕捉到错误。
function firstNonRepeatingLetter(s) {
var x = s.replace(" ", "");
for (var i = 0; i < x.length; i++) {
if (x.charCodeAt(i) < 96) {
var y = x.replace(x[i], "");
var z = String.fromCharCode(x.charCodeAt(i) + 32);
if (y.indexOf(x[0]) > -1 || y.indexOf(z) > -1) {
continue;
} else {
var m = x[i];
}
return m;
} else if (x.charCodeAt(i) > 96) {
var y = x.replace(x[i], "");
var z = String.fromCharCode(x.charCodeAt(i) - 32);
if (y.indexOf(x[0]) > -1 || y.indexOf(z) > -1) {
continue;
} else {
var m = x[i];
}
return m;
}
}
}
【问题讨论】:
-
你有一个 if 和 else if... 但没有 else ...因此,如果您不满足前 2 个 if 条件,您将返回 undefined。
-
请尝试使用浏览器的debugging capabilities。您已使用
console.log记录结果。为什么不在你的函数中记录相关变量,或者使用debugger? -
@Xufox 啊,是的,我跳得太早了……再看一遍
标签: javascript arrays string undefined