作为参数传递的最长字符串的长度

时间:2014-06-14 18:58:35

标签: javascript count string-length

我似乎无法绕过这个。我想要的是一个文本框,输入它1234,12345,12346并返回传递的最长字符串的整数。所以上面会返回6。

我有以下带有文本框的Javascript代码:

var titleInput = document.getElementById("textBoxValue");
function countString() 
  {
 var string = titleInput.value; // Does not work
 //var string = ["123", "1234"]; works with out text box returns 4 hard coded
 console.log(string); // returns ["123, 1234"]

 var largest = 0; // set largest to 0
 for (var i = 0; i < string.length; i++) {
   if (string[i].length > largest) {
     largest = string[i].length;

   }
}
 console.log(largest);
}
countString(); 

我不明白为什么它在硬编码时起作用,但是当从文本框提交时它不会。

2 个答案:

答案 0 :(得分:2)

要从文本框中获取数组,可以使用

var titleInput = document.getElementById("text"),
    arr = titleInput.value.split(', ');

要获得最大长度,您可以将Math.max与其中一个

一起使用
  • ES5 reduce

    arr.reduce(function(prev, curr) {
        return Math.max(prev, curr.length)
    }, 0);
    
  • ES5 map

    Math.max.apply(null, arr.map(function(str){
        return str.length;
    }));
    
  • ES5 map,简化了ES6 spread operatorarrow functions

    Math.max(...arr.map(str => str.length));
    

答案 1 :(得分:0)

对于代码的功能,您必须使用split()方法将文本框的值拆分为数组,并将其用作“字符串”变量(避免对变量名使用保留字!)。否则,使用string [i]语句,您将访问字符串的各个字符,而不是逗号分隔的实际子字符串。所以你的功能应该像这样结束:

var titleInput = document.getElementById("textBoxValue");

function countString() {
var str = titleInput.value.split(',');
console.log(str);

var largest = 0;
for (var i = 0; i < str.length; i++)
    if (str[i].length > largest)
        largest = str[i].length;
console.log(largest);
}

countString();