问题:我遇到以下错误
TypeError:无法读取未定义的属性“ length” 在findShort 在Test.describe._ 在/runner/frameworks/javascript/cw-2.js:152:11 在Promise._execute 在Promise._resolveFromExecutor 在新的承诺 在Object.describe 在/home/codewarrior/index.js:24:10 在/home/codewarrior/index.js:28:5 在Object.handleError
这是我的代码
+- Source
|
+-- repos
|
+--LearnGit
|
+--TestGit
答案 0 :(得分:1)
我相信这是做您想要的事情的一种更简洁的方法:
console.log(findShort("turns out random test cases are easier than writing out basic ones"));
function findShort(s){
let input = s;
let array = input.split(" ");
var shortest = array.reduce((shortestWord, currentWord) => {
return currentWord.length < shortestWord.length ? currentWord : shortestWord;
}, array[0]);
return shortest;
}
答案 1 :(得分:1)
我看到两个问题:
在循环的最后一次运行中,行let str = array[i + 1]
将导致undefined
。这是因为在最后一次运行时,i
比数组长度小一个,因此i + 1
不在数组范围之内。为了弥补这一点,请考虑将循环条件更改为i < array.length - 1
。
第二,您正在将单词长度分配给shortestWord
变量,在这里我认为您是要为其分配单词本身。
考虑到这两个更改,您可以像这样修改代码:
function findShort(s) {
let array = s.split(" ");
let shortestWord = array[0];
for (i = 0; i < array.length - 1; i++) { // -1 here to compensate for the +1 on the next line.
let str = array[i + 1];
if (shortestWord.length > str.length) {
shortestWord = str; // Just assign the word itself to this variable, not the length of it.
}
}
return shortestWord;
}
const result = findShort("turns out random test cases are easier than writing out basic ones");
console.log(result);