Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/425.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript &引用;无法读取属性';拆分';“未定义”的定义;_Javascript_Arrays_Function_For Loop_Split - Fatal编程技术网

Javascript &引用;无法读取属性';拆分';“未定义”的定义;

Javascript &引用;无法读取属性';拆分';“未定义”的定义;,javascript,arrays,function,for-loop,split,Javascript,Arrays,Function,For Loop,Split,我得到以下错误: 无法读取未定义的属性“split” 但是,在前面的代码行中正确定义了附加了split方法的array变量 函数findLongestWord(str){ 对于(i=0;iv.length?r:v'); 控制台日志(结果) .as console wrapper{max height:100%!important;top:0;}str.length获取字符串计数字符的长度,因此44,然后按空格进行拆分,从而获得单词,但继续调用字符串中每个字符的索引,以获得最长的单词,而不是:

我得到以下错误:

无法读取未定义的属性“split”

但是,在前面的代码行中正确定义了附加了
split
方法的
array
变量

函数findLongestWord(str){
对于(i=0;ifindlongest(“敏捷的棕色狐狸跳过了懒狗”)
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");
函数findLongestWord(str){
var数组=str.split(“”);
对于(i=0;i
如果希望它实际返回最长的单词,则需要执行以下操作:

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");
函数findLongestWord(str){
var longestWord=“”
var数组=str.split(“”);
对于(i=0;ilongestWord.length){
longestWord=数组[i]
}
}
返回最长单词
}
findlongest(“敏捷的棕色狐狸跳过了懒狗”);
您可以直接应用并使用数组的方法来获得所需的结果

reduce()方法对累加器和数组中的每个元素(从左到右)应用一个函数,将其减少为单个值

演示

const str=“敏捷的棕色狐狸跳过了懒狗”;
让结果=str.split(“”)。reduce((r,v)=>r.length>v.length?r:v');
控制台日志(结果)

.as console wrapper{max height:100%!important;top:0;}
str.length获取字符串计数字符的长度,因此44,然后按空格进行拆分,从而获得单词,但继续调用字符串中每个字符的索引,以获得最长的单词,而不是:

array[i].split("");
你必须做到:

var longest = "";
array.forEach(function(word) {
    if(word.length > longest.length) {
      longest = word;
    }
});

是要迭代每个单词,还是要迭代每个字符?算出这一点,然后你就可以算出需要删除哪一行。你的预期输出是什么?
str.length
is 44<代码>数组
有9个元素。当您访问
数组[10]
时,您认为会发生什么?正确答案的可能重复。OP也应该知道他还没有完全实现他的功能,但这是一个重要的问题step@wassona,我无法从上面的代码中获取输出…..是吗?@Mamun,上面的代码不生成输出。您需要在某个地方输入
return
语句以获得输出。顺便说一下,函数还没有完成,但您已经有了一个良好的开端。我会在那里的一些地方放一些
console.log
s,来跟踪发生了什么以及你得到了什么结果,并思考你能做些什么从结果中找到最长的单词。如果这有点令人沮丧,很抱歉,但我当了很长一段时间的老师,喜欢帮助人们,让他们能够自己学习。@wassona,我甚至尝试从函数返回
array
,但没有预期的输出。我对答案很感兴趣,因为你说答案是“好答案”…谢谢。对不起,我可以帮你更多的忙。从您的代码中,
array[i].split(“”)
是一个很好的选择,但是它没有被分配给变量,因此
.split
操作正在发生,然后结果立即被丢弃。您应该执行类似于
var wordlets=array[i].split(“”)的操作。然后,您可以使用
.length
计算该单词中有多少个字母。所有其他解决方案都应该可行(尽管C.Sanchez留给您一个步骤来解决),但是您尝试解决问题的方法,虽然时间稍长,但更简单,而且我认为,这是一个更好的编程原理介绍。