我可以'似乎无法使此功能正常工作
I can't seem to get this function to work right
我正在研究最长的单词coderbyte,昨晚我试着玩这个问题中的一些东西-句子中最长的词代码不起作用
这是我的代码:
function LongestWord(sen) {
var sentence = sen.split(" ");
console.log(sentence);
var word = null;
var longest = 0;
for(var i=0; i<=sentence.length; i++){
var words = sentence[i];
console.log(words);
if(longest<words.length){
longest = sentence[i].length;
word = sentence[i];
}
}
// code goes here
return word;
}
LongestWord("This is a test sentence!");
当我调用该函数时,我会收到这个错误——我在提交代码之前使用jsbin运行代码
"TypeError: Cannot read property 'length' of undefined
at LongestWord (mezijosuxu.js:11:24)
at mezijosuxu.js:21:1
at https://static.jsbin.com/js/prod/runner-3.35.5.min.js:1:13616
at https://static.jsbin.com/js/prod/runner-3.35.5.min.js:1:10537"
当我运行for循环时,我正在控制台中记录句子数组和数组中的单词,但我的if语句中的目标是错误的吗?还是我需要使用正则表达式来去除标点符号和非字母字符,并只针对每个单词?我还需要另一个for循环吗?
function LongestWord(sen) {
var sentence = sen.split(" ");
console.log(sentence);
var word = null;
var longest = 0;
for(var i=0; i<sentence.length; i++){
var words = sentence[i];
console.log(words);
if(longest<words.length){
longest = sentence[i].length;
word = sentence[i];
}
}
// code goes here
return word;
}
LongestWord("This is a test sentence!");
由于<=而发生问题替换为<自数组从0 开始的符号
i<句子长度
自定义排序会更容易,只需使用句子数组并使用类似于此的代码
sentence.sort(function(a,b){
return b.length-a.length;
});
这将在您将句子转换为数组后立即使用。运行此排序功能后,可以在sentence[0]
中找到最大的单词
排序函数的文档可以在Mozilla web文档
如果数组的长度为5,索引从0开始,那么在最后一次迭代中,索引将为0、1、2、3…4!因此,最后一个索引必须小于最后一次迭代中的实际数组长度。
for (var i = 0; i < sentence.length; i++)
还有其他几种编写函数的方法。一个Binvention在他们的答案中提到了,那就是在句子数组中使用sort
,但你可以使用pop
代替索引:
function LongestWord2(sen) {
return sen.split(' ').sort(function (a, b) {
return a.length - b.length;
}).pop();
}
另一种可能更笨拙的方法可能会使用数组上reduce
的结果作为数组上的索引,以获得最长的字。
function LongestWord(sen) {
var sentence = sen.split(' ');
return sentence[sentence.reduce(function (p, c, i) {
return c.length > p ? i : p;
}, 0)];
}
演示
相关文章:
- JavaScript打印功能使日历停止工作
- jQuery滚动功能只工作一次
- 为什么ng控制器不调用或工作或功能不工作
- 点击功能没有'ajax调用动态元素(Backbone)后无法工作
- AngularJs中的自动完成功能无法正常工作
- 为什么获胜'我的自定义功能工作
- 角度控制器功能赢得'不按指令工作
- 当我用鼠标左键点击时,让这个功能工作起来
- 重新启动游戏jQuery功能不工作
- 滚动功能不工作
- 角度控制器功能不;在指令内部调用时,似乎无法始终如一地工作
- JS不工作:Sublime 3编辑器-Var main=函数()-=不是“”;激活“;(功能新手)
- 单击水平滚动库中的图像以居中显示无法工作的功能
- MVC 分部视图中的 JQuery UI 自动完成功能只能工作一次
- 为什么本机浏览器排序功能的工作速度比快速排序慢
- 正在尝试获取此代码'在wordpress页面中工作的功能
- JavaScript:如何适应Firefox和/或Chrome的工作功能(IE)
- JQuery不工作.(功能)
- 无工作功能,具有ng-repeat
- 在角度方向don't控制器的工作功能