当我将以下内容输入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;
我得到一个未捕获的TypeError:str.split不是一个函数(...)
我做错了什么?谢谢!
答案 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));