Здравствуйте, я попытался преобразовать строку в массив, а затем найти самое большое слово, вывод должен быть длиной слова в числах. Я не уверен, что я делаю неправильно и почему этот код не работает, если кто-то может указать мне на это, я был бы очень благодарен.
function findLongestWordLength(str) {
let words=str.split(" ");
let bigword=0;
for(let i=0; i<=words.length; i++) {
if (words[i].length>bigword) {
bigword=words[i].length;
}
}
return bigword;
}
В вашем цикле for вы выполняете итерацию немного далеко.
Вы можете заменить i<= words.length
на i< words.length
Это потому, что ваш цикл работает дольше, чем элементы в массиве.
Изменить i<=words.length
на i<words.length
function findLongestWordLength(str) {
let words = str.split(" ");
let bigword = 0;
for (let i = 0; i < words.length; i++) {
if (words[i].length > bigword) {
bigword = words[i].length;
}
}
return bigword;
}
console.info(findLongestWordLength('a aaa bb c'));
Вы также можете использовать Math.max
с переданным сопоставленным массивом длин слов:
const findLongest = (str) => {
const words = str.split(' ');
const longest = Math.max(...words.map(({ length }) => length));
return longest;
};
const str = 'This is the test string';
const longestLength = findLongest(str);
console.info(longestLength);
function findLongestWordLength(str) {
let words = str.split(" ");
let biglength = Math.max(...words.map(({ length }) => length));
let word = [];
for (let i = 0; i < words.length; i++) {
if (words[i].length == biglength) {
word.push(words[i]);
}
}
return word;
}
console.info(findLongestWordLength('a bb ccc ddd ee f'));
function findBigestWordLength(wordsParams) {
const words = wordsParams.split(' ');
console.info(Math.max(...words.map((word) => word.length)));
}
findBigestWordLength('a bb ccc dddd eeeee');
Разве вы не видели ошибку ->
Cannot read properties of undefined (reading 'length')
Если вы новичок в Javascript, вы найдетеconsole
очень удобный инструмент для устранения проблем.