我收到以下错误:
无法读取未定义
的属性'split'
但是,附加array
方法的split
变量在前一代码行中已正确定义。
function findLongestWord(str) {
for (i = 0; i < str.length; i++) {
var array = str.split(" ");
array[i].split("");
}
}
findLongestWord("The quick brown fox jumped over the lazy dog");
答案 0 :(得分:1)
str.length
实际上是字符串中的字母数,而array是一个单词数组。这就是为什么i
最多可以达到45,而你的数组只有9个元素 - 这就是为什么当它试图访问array[10]
时它会被取消定义并且无法拆分它。这应该有所帮助:
function findLongestWord(str) {
var array = str.split(" ");
for (i = 0; i < array.length; i++) {
array[i].split("");
}
}
findLongestWord("The quick brown fox jumped over the lazy dog");
如果您希望它实际返回最长的单词,您需要执行以下操作:
function findLongestWord(str) {
var longestWord = ""
var array = str.split(" ");
for (i = 0; i < array.length; i++) {
if(array[i].length > longestWord.length){
longestWord = array[i]
}
}
return longestWord
}
findLongestWord("The quick brown fox jumped over the lazy dog");
答案 1 :(得分:0)
您可以尝试split()
和reduce()
,如下所示:
function findLongestWord(str) {
str = str.split(' ').reduce(function(a, b) {
return a.length > b.length ? a : b;
}, '');
return str;
}
console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));
&#13;
.as-console-wrapper{
top: 0;
}
&#13;
答案 2 :(得分:0)
您可以直接应用split(" ")
并使用reduce()
数组方法来获取所需的结果。
reduce()方法对累加器和数组中的每个元素(从左到右)应用函数,将其减少为单个值。
<强>样本强>
const str = "The quick brown fox jumped over the lazy dog";
let result = str.split(" ").reduce((r, v) => r.length > v.length ? r : v, '');
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
答案 3 :(得分:0)
str.length获取字符串计数字符的长度,所以44,然后你用空格分割,所以你得到单词,但你继续调用字符串中每个字符的索引,以获得最长的单词而不是:
array[i].split("");
你必须这样做:
var longest = "";
array.forEach(function(word) {
if(word.length > longest.length) {
longest = word;
}
});