[英]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.