我正在研究一个练习题:
不使用javascript的本机
string.length方法返回字符串的长度.
我能想到的唯一方法是substring或者slice,但我很难过.
nnn*_*nnn 12
你可以遍历字符串,测试undefined每个索引是否有非值(只要你得到一个undefined超过字符串结尾的值):
function strLength(s) {
var length = 0;
while (s[length] !== undefined)
length++;
return length;
}
console.log(strLength("Hello")); // 5
console.log(strLength("")); // 0Run Code Online (Sandbox Code Playgroud)
(我假设如果你不允许使用本机字符串.length属性,你可能不应该使用数组.length属性str.split("").length...)
鉴于这是一个实践问题,我怀疑 OP 可能不想要 ES6/ES2015,但是,以防万一这是一个选项,和/或其他正在研究此问题的人,这里有一个简洁的现代方法:
const str = "Hello world!";
console.log([...str].reduce(a => a+1, 0));Run Code Online (Sandbox Code Playgroud)
(当我发布这篇文章时,没有其他答案提出了这个解决方案。但是,我错过了@MarkoGrešak 在对另一个问题的评论中基本上提出了这个确切解决方案的事实。)