字符串长度属性的替代

时间:2016-11-21 06:34:23

标签: javascript string

当我开始编程之旅时,这是Stack Overflow的第一个问题,所以我欢迎任何有关改进我的问题或研究技能的建议。

我试图找出如何确定字符串的长度,而不使用.length。相反,我被允许使用名为slice的字符串方法,问题是我在构建递归代码时考虑索引。

我的方法是在没有上述限制的情况下考虑解决这个问题的最简单方法来反思这个问题:

function stringLength (string) {
     return string.length;
}
  stringLength("Goodbye"); // This would invoke 7.

如果我然后使用.slice方法并检查索引:

"Goodbye".slice(0); // This would invoke "Goodbye".
"Goodbye".slice(7); // This would invoke "".

因此,为了获得字符串的长度,我还可以尝试确定我需要“切片”的字符数,以便调用“”或者尝试查找字符串中最后一个字符的索引并添加1.

以下是我的想法,但不确定我是否朝着正确的方向前进,我不知道在我的其他声明中应该采取什么建议 - 任何建议或建议?

function stringLength (string) {
    var index = 0; // I'm pretty sure this is wrong!

// My base case establishes that if the index number within the slice method invokes nothing, that index number is the length of the string

 if (string.slice(index) === "") {
   return index; 

// Otherwise, cycle through the function until the index number is correct. 

   } else {
       return string.slice(index + 1);
        }
}

8 个答案:

答案 0 :(得分:2)

有几种方法可以在不使用字符串

上的.length的情况下查找字符串的长度

var str = "Goodbye";
console.log(str.split("").length); // I'm not using length on string, but on array

使用String.prototype.lastIndexOf()。它将返回指定值的最后一次出现的调用String对象中的索引,从后向搜索。

var str = "Goodbye";
console.log(str.lastIndexOf(""));

var str = "Goodbye";

var length = 0;
while (str != "") {
  str = str.substring(1);
  ++length;
}

console.log(length);

答案 1 :(得分:2)

因为您应该使用切片方法:

function stringLength(s) {
    let i = 0; 
    while(s != '') { 
        i += 1; 
        s = s.slice(1); 
    } 
    return i;
}

答案 2 :(得分:1)

这是使用 slice 的递归解决方案:



var s = "Goodbye";

console.log(stringLength(s));

function stringLength (string, length) {
  length = length || 0;
  if (string.slice(length)) {
    return stringLength(string, ++length);
  }
  return length;
}




答案 3 :(得分:0)

您可以使用Array.forEachsplit()

的组合

function stringLength(str) {
  var myArray = str.split('');
  var i = 0;
  myArray.forEach(function(value) {
    i++;
  });
  return i;
}

console.log(stringLength("Goodbye"))

答案 4 :(得分:0)

怎么样:

    var constraints = {
                    video: true,
                    audio: false,
            }

    // get the media sources
    MediaStreamTrack.getSources(function(sourceInfos) {

            navigator.getUserMedia( constraints, function(stream){
                domElement.src = URL.createObjectURL(stream);
            }, function(error) {
                    console.error("Cant getUserMedia()! due to ", error);
            });
    });

答案 5 :(得分:0)

只需尝试此forEach()。它从0

开始

var length=0;
var testing = "Goodbye".split("").forEach(function (item,index){
    length =index;
})

console.log(length)//0 to 6 

答案 6 :(得分:0)

您可以使用lastIndexOf字符串属性。

第一个字符的索引是0,最后一个字符的索引是str.length - 1. lastIndexOf()方法区分大小写

'Goodbye'.lastIndexOf('')

答案 7 :(得分:0)

阅读documentation for slice。它返回新字符串,它是旧字符串的一部分。这意味着您可以重复slice字符串中的一个字符,直到您什么都没有。计算你所做的slice的数量,你知道字符串有多长!

示例代码

function stringLengthBySlice(s) {
    var length = 0;
    while(s != "") {
        s = s.slice(1);    // This is the key line.  It takes a slice of the string with 
                           // all but the first character.
        length++'
    }

    return length;
}