我一直在使用javascript算法并且一直困惑为什么一个工作而另一个工作不起作用。我已经想到这一点,我需要你们许多人的详尽解释,听取不同的解释,以巩固我对这里发生的事情的理解。
解释两种算法之间的区别:
function findLongestWord(str) {
var longestNum = 0;
var splitStr = str.split(" ");
for(var i = 0; i < splitStr.length; i++) {
if(splitStr[i].length > longestNum) {
longestNum = splitStr[i].length;
}
}
return longestNum;
}
findLongestWord("The quick brown fox jumped over the lazy dog");
为什么顶部的工作和底部工作不起作用?
function findLongestWord(str) {
var longestNum = 0;
var splitStr = str.split(" ").length;
for(var i = 0; i < splitStr; i++) {
if(splitStr[i].length > longestNum) {
longestNum = splitStr[i].length;
}
}
return longestNum;
}
findLongestWord("The quick brown fox jumped over the lazy dog");
答案 0 :(得分:3)
splitStr
包含数组的长度,而不是数组本身。
var splitStr = str.split(" ").length;
// ^^^^^^
它不适用于索引
splitStr[i]
// ^^^
因为数字没有索引。
包含console.log
部分的整个非工作代码。它打破了访问权限
splitStr[i]
,因为原始数据类型没有属性。因此无法通过索引访问。
function findLongestWord(str) {
var longestNum = 0;
console.log('longestNum', longestNum); // 0
var splitStr = str.split(" ").length;
console.log('splitStr', splitStr); // 9
for (var i = 0; i < splitStr; i++) {
console.log('i', i); // 0
console.log('longestNum', longestNum); // 0
console.log('splitStr', splitStr); // 9
if (splitStr[i].length > longestNum) { // << Unable to get property |
console.log('splitStr['+i+']', splitStr[i]); // | 'length' of undefined |
longestNum = splitStr[i].length; // | or null reference <<
}
console.log('longestNum', longestNum);
console.log('--');
}
return longestNum;
}
console.log(findLongestWord("The quick brown fox jumped over the lazy dog"));
console.log(result);
&#13;
.as-console-wrapper { max-height: 100% !important; top: 0; }
&#13;
请同时查看这些问题和答案。
答案 1 :(得分:0)
在底部,您将分配splitStr的值。
答案 2 :(得分:0)
function findLongestWord(str) {
var longestNum = 0;
var splitStr = str.split(" ").length;
for(var i = 0; i < splitStr; i++) {
if(splitStr[i].length > longestNum) {
longestNum = splitStr[i].length;
}
}
return longestNum;
}
findLongestWord("The quick brown fox jumped over the lazy dog");
var splitStr = str.split(“”)。length
str.split(“”)//这将返回一个字符串数组
str.split(“”)。lenght //返回数组的长度,比如说3
所以splitStr最终拿着3
所以做splitStr [i] .length就像做3 [i] .length一样没有意义