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

时间:2016-05-27 01:06:09

标签: javascript split

当我将以下内容输入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));
&#13;
&#13;
&#13;

我得到一个未捕获的TypeError:str.split不是一个函数(...)

我做错了什么?谢谢!

6 个答案:

答案 0 :(得分:1)

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

答案 1 :(得分:0)

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

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

答案 2 :(得分:0)

略微更具功能性的方法更易于读者阅读。

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

答案 3 :(得分:0)

你的问题是你将一个字符串数组的参数传递给你的函数,而不是只传入你的字符串。

另请注意,使用for-loop几乎总是有更好的方法。 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,它可以使您的代码更清晰,并有助于防止错误。

答案 4 :(得分:0)

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

};

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

答案 5 :(得分:0)

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

而是传递一个字符串。

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