Javascript 查找字符串中长度最大的所有单词
我想从字符串中找出所有长度最大的单词 目前,结果只是长度最大的第一个:Javascript 查找字符串中长度最大的所有单词,javascript,ecmascript-6,Javascript,Ecmascript 6,我想从字符串中找出所有长度最大的单词 目前,结果只是长度最大的第一个:'jumped1',而我想要它们全部:['jumped1','jumped2'] 我如何适应以下情况 function test(str) { var newStr = str.split(' '); var nu = 0; var word =null; for(var i=0; i < newStr.length; i++){ if(newStr[i].length > nu){
'jumped1'
,而我想要它们全部:['jumped1','jumped2']
我如何适应以下情况
function test(str) {
var newStr = str.split(' ');
var nu = 0;
var word =null;
for(var i=0; i < newStr.length; i++){
if(newStr[i].length > nu){
nu = newStr[i].length; // length
word = newStr[i]; // word
}
}
return word;
}
console.log(test("The quick brown fox jumped1 over the lazy dog - jumped2"));
功能测试(str){
var newStr=str.split(“”);
var-nu=0;
var-word=null;
对于(变量i=0;inu){
nu=newStr[i].length;//length
word=newStr[i];//word
}
}
返回词;
}
log(test(“敏捷的棕色狐狸跳过了懒惰的狗-跳过了2”);
当您找到最长单词时,将其推送到最长单词数组中,而不是指定给变量word
。但是,当找到新的最长单词时,您必须处理对数组的消隐
功能测试(str){
var split_string=str.split(“”);
var最长_长度=0;
var-words=[];
for(拆分字符串的let字符串){
if(string.length>最长长度){
单词=[字符串];
最长长度=string.length;
}else if(string.length==最长长度){
推(弦);
}
}
返回单词;
}
log(test(“敏捷的棕色狐狸跳过了懒惰的狗-跳过了2”)代码>您可以使用获取最长单词的长度,然后获取该长度的单词列表:
功能测试(str){
变量词=str.split(“”);
var maxLen=words.reduce(函数(num,word){
返回Math.max(num,word.length);
}, 0);
返回单词。过滤器(函数(单词){
返回word.length==maxLen
});
}
log(test(“敏捷的棕色狐狸跳过了懒惰的狗-跳过了2”)
如果我正确理解了问题,您可以在找到最大长度后使用过滤器
,以便返回每个单词的数组,其长度===max
功能测试(str){
让单词=str.split(“”)
设max=0
words.forEach(word=>{
如果(word.length>max)max=word.length
})
返回words.filter(word=>word.length==max)
}
console.log(
测试(“敏捷的棕色狐狸跳过了懒惰的狗-跳过了2”)
)
您可以通过收集更长的单词或相同长度的单词来减少数组
功能测试(字符串){
返回字符串
.拆分(“”)
.减少((r,w)=>{
如果(!r | | r[0]。长度 log(test(“敏捷的棕色狐狸跳过了懒惰的狗-跳过了2”)代码>你说的“多个词”是什么意思?你是指结尾有数字的单词,还是希望所有单词都有一个最大长度的数组?@Joe我想如果有多个相同长度的单词nop,jumped1和jumped2,那么它们的意思就不止一个了。目前它只显示jumped1,因为这两个单词的长度都相同(7),所以如果数组中最长的单词是长度7,返回长度为7的所有单词?是。这是O(2n)
,但是O(n)
是可能的。@JoeIddon虽然我明白你的意思,但你不会考虑2,请看@NickA是的,它们的执行时间都与输入大小成线性关系,只是我的速度总是两倍:)。你的仍然是一个很酷的功能性方法,所以我的+1@理论上的乔伊登;)就我所知,reduce
和filter
的执行速度比迭代快(虽然我可能错了!),你的O(n)也是如此。这是O(2n)
,但是O(n)
是可能的。谢谢@JoeIddon,我没有意识到如何一次积累-你的答案是优雅的100%天才!,不comments@ShanuTThankachan如果答案解决了您的问题,请