str.split不是javascript中的函数错误

str.split不是javascript中的函数错误,javascript,split,Javascript,Split,当我在Sublime中输入以下内容时,我不断收到一个错误: 函数最长字(str){ var结果=str[0]; str=str.split(“”); 对于(变量i=0;iresult.length){ 结果=str[i]; } } 返回结果; } var句子=[“敏捷的棕色狐狸跳过了懒狗。”]; console.log(最长的单词(句子))您正在尝试拆分数组,而不是字符串。以下代码已更正 function longestWord(str){ var result = str[0];

当我在Sublime中输入以下内容时,我不断收到一个错误:

函数最长字(str){
var结果=str[0];
str=str.split(“”);
对于(变量i=0;iresult.length){
结果=str[i];
}
}
返回结果;
}
var句子=[“敏捷的棕色狐狸跳过了懒狗。”];

console.log(最长的单词(句子))您正在尝试拆分数组,而不是字符串。以下代码已更正

function longestWord(str){
    var result = str[0];
    str = **result**.split(' ');

    for(var i = 0; i < str.length; i++){
        if(str[i].length > result.length){
            result = str[i];
        } 
    }

    return result;
}
函数最长字(str){
var结果=str[0];
str=**结果**.分割(“”);
对于(变量i=0;iresult.length){
结果=str[i];
} 
}
返回结果;
}

功能性更强,读者更友好

函数getLargestWord(StringOrray){ var words=stringorary.toString().match(//\w+/gi);///toString..如果是数组,则不需要它 var wordLength=words.map((e,i)=>i=e.length); var highestNumber=Math.max.apply(null,字长); 返回单词[wordLength.indexOf(highestNumber)]; } var句子=“敏捷的棕色狐狸跳过了懒狗。”;
log(getLargestWord(句子))
您的问题是将一个字符串数组的参数传递到函数中,而不仅仅是传递字符串

还请注意,几乎总有比使用for循环更好的方法。用于遍历数组并返回单个值:


变量最长=函数(str){
返回str.split(“”).reduce(函数(长、当前){
返回cur.length>long.length?cur:long;
}, '');
};
var str=‘敏捷的棕色狐狸跳过了懒狗’;
console.log(最长(str))
函数最长字(str){
var结果=str[0];
str=str.split(“”);
对于(变量i=1;iresult.length){
结果=str[i];
}
}
返回结果;
}
var句子=“敏捷的棕色狐狸跳过了懒狗。”;
写(最长的单词(句子));

我遇到了同样的最长单词挑战,我没有找到简单的解决方法,所以我创建了一个方法将一个句子拆分为一个数组,因为str.split()在那个特定的平台上不起作用

function splitArray(sentence){
  var arrayPosition = 0;
  var oneWord = "";
  var newSentence = sentence + " ";
  var splitArray = new Array();
for(var j = 0; j < newSentence.length; j++){
  if(newSentence[j] === " "){
      splitArray.push(oneWord);
      arrayPosition++;
      oneWord = "";
  }else{
    if(!isNaN(newSentence[j])){
        //don't add to the string
    }else{
        oneWord += newSentence[j];
    }
  }
}
return splitArray;

};
函数拆分数组(句子){
var arrayPosition=0;
var oneWord=“”;
var newSentence=句子+“”;
var splitArray=新数组();
对于(var j=0;j

此函数返回传递的句子中每个单词的数组,不将整数作为字符或字符串。

这是因为您试图拆分数组

而是传递一个字符串

function longestWord(str) {
    var result = str[0];
    str = str.split(' ');

    for (var i = 1; i < str.length; i++) {
        if (str[i].length > result.length) {
            result = str[i];
        }
    }
    return result;
}
var sentence = "the quick brown fox jumped over the lazy dog.";
document.write(longestWord(sentence));
函数最长字(str){
var结果=str[0];
str=str.split(“”);
对于(变量i=1;iresult.length){
结果=str[i];
}
}
返回结果;
}
var句子=“敏捷的棕色狐狸跳过了懒狗。”;
写(最长的单词(句子));

“我做错了什么?”---您试图调用的不是函数的东西。您作为
str
传递了什么?什么是
str
?请举例说明如何调用
longestWord('您在这里传递的是什么?')
当函数需要字符串时,为什么要将数组传递给函数?@Mike-这是一种非常有用的信息,仅供参考。我建议改为更改传递的值。让函数接受带有单个元素的数组似乎不合理并与之进行比较
str[i]
的长度不能超过当前的
result
function longestWord(str) {
    var result = str[0];
    str = str.split(' ');

    for (var i = 1; i < str.length; i++) {
        if (str[i].length > result.length) {
            result = str[i];
        }
    }
    return result;
}
var sentence = "the quick brown fox jumped over the lazy dog.";
document.write(longestWord(sentence));