Javascript最后一封信被切断
Javascript Last Letter getting cut off
本文关键字:最后一封信 Javascript 更新时间:2023-09-26
好了,基本上这段代码将一个句子传递给函数,函数需要找出要返回的最长的单词。一切都很顺利,除了最后一个字母总是被剪掉。那么解决这个问题的好办法是什么呢?
function LongestWord(sen) {
sen = sen.toLowerCase();
var build = "";
var arr = [];
var longest = 0;
for(var i = 0; i < sen.length;i++){
var cur = sen.charCodeAt(i);
console.log(sen.charCodeAt(i))
if(i == sen.length - 1){
arr.push(build);
}
if(sen.charAt(i) === " "){
arr.push(build);
build = "";
}
if(cur >= 97 && cur <= 122){
build += String.fromCharCode(cur);
}
}
console.log(arr);
for(var e = 0; e < arr.length - 1;e++){
if(arr[e].length > arr[e + 1].length){
longest = arr[e];
}
else{
longest = arr[e + 1];
}
}
return longest;
}
// keep this function call here
// to see how to enter arguments in JavaScript scroll down
console.log(LongestWord("Johnny ErsoL"));
它返回"Johnny",这是正确的,但这是数组最后的样子。
[ 'johnny', 'erso' ]
这是我的建议
function LongestWord(sen) {
return sen.split(/'b/).filter(function(item) {
return item.trim().length;
}).sort(function(a,b) {
return b.length - a.length;
});
}
按单词边界拆分句子,然后剪掉空格,最后按每个单词的长度排序并返回排序后的数组。
尝试替换
for(var i = 0; i < sen.length;i++){
var cur = sen.charCodeAt(i);
console.log(sen.charCodeAt(i))
if(i == sen.length - 1){
arr.push(build);
}
if(sen.charAt(i) === " "){
arr.push(build);
build = "";
}
if(cur >= 97 && cur <= 122){
build += String.fromCharCode(cur);
}
}
arr=sen.split();
e <arr.length -1
有一个for循环。我认为你不需要-1
我知道你已经找到了你的答案,但是我只是想告诉你一个你正在做的事情的替代方案。
为了简化你的代码,使它更容易理解,同时也更灵活,确保每个函数只做一件事,或者有一个单一的职责,通常是一个好主意。
在你的代码中,你的LongestWord
函数负责识别什么是一个单词和,找出哪个是最长的。
你可以做的是创建一个函数,它知道如何将一个句子标记成单词:
function forEachWordsIn(str, callback) {
var rx = /'b('w+?)'b/g,
match;
while (match = rx.exec(str)) callback(match[0]);
}
然后使用longestWord
函数中的单词迭代器函数,这使得这个算法现在非常简单:
function longestWord(sen) {
var longestWord = '';
forEachWordsIn(sen, function (word) {
if (word.length > longestWord.length) longestWord = word;
});
return longestWord;
}
注意:我将LongestWord
重命名为longestWord
,因为使函数以大写字母开头是识别构造函数的众所周知的标准
相关文章:
- 键入最后一位数字后自动提交
- 使用Booklet Jquery插件,我如何验证最后一页是否显示
- 正在尝试删除子元素的最后一个子元素
- jQuery分页下一页和上一页按钮在点击零或超过最后一页后失败
- 如何为AngularJS制作智能表中第一页和最后一页的跳过按钮
- 如何使用 num.toString 和 str.split 查找整数的最后一位数字
- 在JavaScript中重构上个月的第一天和最后一天的代码(node.js)
- Datatables-如何在未显示所有列的情况下禁用表中最后一列的排序
- 如何从对象数组中获取最后一项
- 为什么只有最后一项显示,而不是全部显示
- Javascript匹配以从URL中删除部分文件名-替换最后一次出现的内容
- 正在查找最后一次出现的文本
- 当用户键入一封信时,如何使用ajax自动完成来显示MySQL数据库中的值
- 删除最后一项jquery
- JavaScript只有在最后一次被调用时才运行函数
- 当用户在选择框中选择选项时,使用window.location.href重定向用户只会更改导航器中URL的最后一位
- 将具有两个此类子字符串的字符串中的第一个子字符串生成与正则表达式匹配,正则表达式通常默认匹配最后一个子字符串
- 如果今天是会计年度的最后一天,请从下拉菜单中删除当前年份
- 为什么表达式/0+[0-9]/通过了“0”的测试;00f”"f”;是一封信
- Javascript最后一封信被切断