我想知道这个简单的代码是什么问题。我正在做一个函数,需要获取字符串中最短单词的长度。我知道我可以在任何地方找到此功能,
为什么我的不工作?
function findShort(s){
var arr = s.split(" ");
var out = 1000;
for (var i = 0; i < arr.length-1; i++){
if (arr[i] <= out){
out = arr[i].length;
}
}
return out;
}
以上函数返回1000。
答案 0 :(得分:4)
您需要比较每个单词(arr[i].length
)的长度,而不是每个单词本身(arr[i]
)的长度与到目前为止的最短长度。
function findShort(s){
var arr = s.split(" ");
var out = 1000;
for (var i = 0; i < arr.length-1; i++){
if (arr[i].length <= out){ // <-- here!
out = arr[i].length;
}
}
return out;
}
答案 1 :(得分:1)
您的问题是,当您在javascript中比较字符串时,它不使用它的长度。您必须使用字符串的“ length”属性,如下面的固定代码中所示。另外,您必须保存结果以提供输出
function findShort(s){
var arr = s.split(" ");
var comp = 1000;
var out = "";
for (var i = 0; i < arr.length-1; i++){
if (arr[i].length <= comp){
comp = arr[i].length;
out = arr[i];
}
}
return out;
}
如果您要返回一个包含所有最短单词(相同长度)的数组,仍然存在问题。您可以添加另一个if语句,并使其长度相同时将其添加到数组中,并在找到较短的单词时将其清除。
答案 2 :(得分:-2)
尝试一下。
function findShort(){
s = "sample test try";
var arr = s.split(" ");
var out = 1000;
for (var i = 0; i < arr.length; i++){
if (arr[i].length <= out){
out = arr[i].length;
}
}
return out;
}
alert(findShort());