Я должен найти самое длинное слово в строке, это код, который я придумал до сих пор. К сожалению, это, кажется, не работает, и мой вопрос почему?
function findLongestWordLength(str) {
str.split("");
let longest = 1;
for(let i = 0; i < str.length; i++){
if (str[i].length > longest){
longest = str[i].length;
}
}
return longest;
}
7 ответов
Если я правильно понял, есть две основные проблемы:
1) Вы не сохраняете результат String.split () где угодно.
2) Если вам нужно разделить отдельные слова, вам нужно разделить на space
Я также начну с longest = 0
вместо 1
Примере:
function findLongestWordLength(str)
{
str = str.split(" ");
let longest = 0;
for (let i = 0; i < str.length; i++)
{
if (str[i].length > longest)
longest = str[i].length;
}
return longest;
}
console.log(findLongestWordLength("Hello World"));
console.log(findLongestWordLength(""));
console.log(findLongestWordLength("123 1234567 12345"));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
Кроме того, вы можете использовать Array.map () чтобы map
каждое слово его длины, а затем spread
этот массив длин на Math.max (), чтобы получить желаемый результат:
function findLongestWordLength(str)
{
let wordLengths = str.split(" ").map(word => word.length);
return Math.max(...wordLengths);
}
console.log(findLongestWordLength("Hello World"));
console.log(findLongestWordLength(""));
console.log(findLongestWordLength("123 1234567 12345"));
.as-console {background-color:black !important; color:lime;}
.as-console-wrapper {max-height:100% !important; top:0;}
function findLongestWordLength(str) {
var otherStr = str.split(" ");
let longest = 0;
for(let i = 1; i < otherStr.length; i++){
if (otherStr[i].length > otherStr[longest].length){
longest = i;
}
}
return otherStr[longest];
}
findLongestWordLength("This is the String Data")
Проблема в том, что вторую строку нужно изменить на str = str.split(" ");
, потому что строки неизменяемы и не могут быть изменены, их нужно переназначить.
function findLongestWordLength(str) {
str = str.split(" ");
let longest = 1;
console.log(str);
for(let i = 0; i < str.length; i++){
if (str[i].length > longest){
longest = str[i].length;
}
}
return longest;
}
var result = findLongestWordLength("Joan Ala Valeron")
console.log(result);
Это не будет работать, потому что вы проходите через каждый символ в строке, длина которой равна 1. Вы не сравниваете длину слов.
function findLongestWordLength(str) {
let words = str.split(" "); // Delemiter to separate words from sentence is space
let longest = 1;
for(let i = 0; i < words.length; i++){
if (words[i].length > longest){
longest = words[i].length;
}
}
return longest;
}
Вы можете попробовать этот код.
function findLongestWordLength(str) {
var strSplit = str.split(' ');
var longest = 0;
for(var i = 0; i < strSplit.length; i++){
if(strSplit[i].length > longest){
longest = strSplit[i].length;
}
}
return longest;
}
findLongestWordLength("The quick brown fox jumped over the lazy dog");
function spacer(m)
{
var space = "";
for(var inst = 0; inst < m;inst++)
space += "\n";
console.log(space);
}
function findLongestWordLength(str) {
//Checking that what you are sending is a string...
if(typeof str !== "string")
throw "This function requires you to pass in a string...";
//Ghetto Class...lol
function CreateWord(word)
{
this.word = word;
this.length = word.length;
}
// Getting all the words...but taking out the words that are ""
var AllWords = str.split(" ").filter(word => word != ""),
// This is how many words you have that are not ""
wordCount = AllWords.length,
// Defaulting the longest word to the first word...
longest = new CreateWord(AllWords[0]);
// if we only have one, we return the one word...
if(wordCount === 1)
return longest;
for(let i = 0; i < wordCount; i++){
if (AllWords[i].length > longest.length){
longest = new CreateWord(AllWords[i]);
}
}
return longest;
}
//Simple Test...
var Implementation = findLongestWordLength("ONE TWO THREE FOUR TESTINGLONGWORD");
console.log(Implementation);
console.log(`Word: ${Implementation.word}`);
console.log(`Length: ${Implementation.length}`);
spacer(3);
//Single word...
var Implementation2 = findLongestWordLength("Only-One-Word");
console.log(Implementation2);
console.log(`Word: ${Implementation2.word}`);
console.log(`Length: ${Implementation2.length}`);
spacer(3);
//Exception...because I dont want want you to misUse this function....
var Implementation3 = findLongestWordLength(null);
console.log(Implementation3);
console.log(`Word: ${Implementation3.word}`);
console.log(`Length: ${Implementation3.length}`);
Вам нужно разделить строку на " "
. Затем перебирайте слова и возвращайте наибольшую длину.
function findLongestWordLength(str) {
const words = str.split(" ");
return words.reduce(
(max, word) => (word.length > max ? word.length : max),
0
);
}
console.log(findLongestWordLength("hello world"));
Это решение короче и чище благодаря использованию reduce
.
Похожие вопросы
Новые вопросы
javascript
По вопросам программирования на ECMAScript (JavaScript / JS) и его различных диалектах / реализациях (кроме ActionScript). Включите все соответствующие теги в свой вопрос; например, [node.js], [jquery], [json] и т. д.