繁体   English   中英

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

[英]str.split is not a function error in javascript

当我将以下内容输入到 Sublime 时,我不断收到错误消息:

 function longestWord(str) { var result = str[0]; str = str.split(' '); for (var i = 0; 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."]; console.log(longestWord(sentence));

我得到一个 Uncaught TypeError: str.split is not a function(...)

我究竟做错了什么? 谢谢!

您的问题是您将一个字符串数组的参数传递到您的函数中,而不仅仅是传递您的字符串。

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

 var longest = function(str){ return str.split(' ').reduce(function(long, cur){ return cur.length > long.length ? cur : long; }, ''); }; var str = 'the quick brown fox jumps over the lazy dog'; console.log(longest(str));

请注意,您不必手动跟踪索引、创建临时变量或手动从数组中提取数据。 一旦习惯了reduce它可以使您的代码更清晰并有助于防止错误。

          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));

您正在尝试拆分数组,而不是字符串。 以下代码已更正。

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;
}

稍微更实用的方法,对读者更友好。

 function getLargestWord(stringOrArray){ var words = stringOrArray.toString().match(/\\w+/gi); //toString..ifs its an array otherwise dont need it var wordLength = words.map((e ,i) => i = e.length); var highestNumber = Math.max.apply(null,wordLength); return words[wordLength.indexOf(highestNumber)]; } var sentence = "the quick brown fox jumped over the lazy dog."; console.log(getLargestWord(sentence))

我遇到了同样的最长单词挑战,但我没有找到简单的方法,所以我创建了一种将句子拆分为数组的方法,因为 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;

};

该函数为传入的句子中的每个单词返回一个数组,并且不将整数作为字符或字符串。

这是因为您正在尝试拆分数组。

而是传递一个字符串。

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));

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM