Javascript:获取没有长度属性的字符串的长度,以及切片

mar*_*tte 4 javascript

我知道,这是一个奇怪的!但为什么这不起作用?

function getStringLength(string) {

  // see how many substrings > 0 can be built
  // log that number & return

  var subString = string.slice();
  var counter = 0;

  while (subString !== '') {
    counter++;
    subString = subString.slice(counter);
  }

  return counter;
}

var output = getStringLength('hello');

console.log(output); // --> expecting 5, but getting 3 (??)
Run Code Online (Sandbox Code Playgroud)

我真的想用切片来做!最初的挑战是不使用length属性,我想出来了,这很好用:

function getStringLength(string) {

  var long = 0;

  while (string[long] !== undefined) {
    long++;
  }

  return long;
}
Run Code Online (Sandbox Code Playgroud)

mar*_*308 6

你正在改变你的字符串,这应该适合你

function getStringLength(string) {

  // see how many substrings > 0 can be built
  // log that number & return

  var subString = string.slice();
  var counter = 0;

  while (subString !== '') {
    counter++;
    subString = subString.slice(1);
  }

  return counter;
}

var output = getStringLength('hello');

console.log(output); // 5
Run Code Online (Sandbox Code Playgroud)

主要区别在于我在做什么

subString = subString.slice(1);
Run Code Online (Sandbox Code Playgroud)

代替

subString = subString.slice(counter);
Run Code Online (Sandbox Code Playgroud)

总长度减少1