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

时间:2017-02-18 00:56:34

标签: javascript

我正在研究练习题:

  

不使用javascript的原生string.length方法返回字符串的长度。

我能想到的唯一方法是substringslice,但我很难过。

11 个答案:

答案 0 :(得分: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




(我假设如果您不允许使用本机字符串.length属性,那么您可能不应该使用数组.length属性{ {1}} ...)

答案 1 :(得分:4)

鉴于这是一个练习题,我怀疑OP可能不想要ES6 / ES2015,但是,如果这是一个选项,和/或对于其他人正在看这个,这里是一个简洁的现代方法:

const str = "Hello world!";

console.log([...str].reduce(a => a+1, 0));

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

答案 2 :(得分:1)

您可以使用展开元素Array.prototype.keys()迭代器,Array.prototype.pop()

var str = "abc";
var len = [...[0,...str].keys()].pop();
console.log(len, str.length);

答案 3 :(得分:1)

到目前为止,我们已经能够使用Object.keys()Array.prototype.pop()并检查空字符串。方法可能会进一步改善。

var len = str === "" ? 0 : +Object.keys(str).pop()+1;

@nnnnnnn在上面使用了两种方法,超过了简洁的初始尝试和解决空字符串的情况。

var len = +Object.keys(str+' ').pop();

答案 4 :(得分:0)

一种方法是迭代分裂字符串,如下所示:

var count = 0;
Array.from("string here".split("")).forEach(function(){count++});

请在评论中使用reduce功能将其缩短为以下标记:

var count = Array.from("string here".split("")).reduce(function(count){return count+1}, 0);

答案 5 :(得分:0)

您可以使用array.length,因此您可以回答不使用本机string.length的问题。

var Str = "Hello world!";
const CountAr = Str.split("").length;
console.log(CountAr);
/*12*/

答案 6 :(得分:0)

function stringLength(str) {
  var count = 0;
  var index = 0;

  while(string[index] !== undefined){
    count += 1;
    index += 1;
  }
  return count;
}

答案 7 :(得分:0)

我认为这会奏效。如果你从''开始,它就不会进入while循环,你只会返回0。

function getStringLength(string) {
  var idx = 0;
  while (string[idx] !== undefined) {
    idx += 1;
  }
  return idx;
}

答案 8 :(得分:0)

这将起作用。

function  length(str) {
    str = str.split(''); 
    var length = 0;
    str.forEach(function(element) { 
    length++;  
    });
    return length;    
}

length('hello'); //输出5

答案 9 :(得分:0)

还有另一种方法

function getStringLength(str){
  var count = 0;
  for(var letter in str){
    count += 1;
  }
  return count;
}

console.log(getStringLength('Mississippi')) // 11
console.log(getStringLength('')) // 0 

答案 10 :(得分:0)

for循环是我认为的方法。您可以使用slice或substring,但是for in循环也可以轻松地计算字符串。

function getStringLength(string) {
      var length = 0;
      for (var i in string){
        length++;
      }
      return length;
      }