如何在不使用原生长度方法的情况下获取javascript中字符串的长度

Jam*_*s N 4 javascript

我正在研究一个练习题:

不使用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("")); // 0
Run Code Online (Sandbox Code Playgroud)

(我假设如果你不允许使用本机字符串.length属性,你可能不应该使用数组.length属性str.split("").length...)


And*_*ems 5

鉴于这是一个实践问题,我怀疑 OP 可能不想要 ES6/ES2015,但是,以防万一这是一个选项,和/或其他正在研究此问题的人,这里有一个简洁的现代方法:

const str = "Hello world!";

console.log([...str].reduce(a => a+1, 0));
Run Code Online (Sandbox Code Playgroud)

(当我发布这篇文章时,没有其他答案提出了这个解决方案。但是,我错过了@MarkoGrešak 在对另一个问题的评论中基本上提出了这个确切解决方案的事实。)