Задача.
Правильно ли записана функция findLongestWord(str), которая получает аргументом произвольную строку и возвращает самое длинное слово в этой строке?
Как реализовать проверку условия - в строке могут быть только пробелы и символы букв и цифр?
'use strict';
const findLongestWord = function(str) {
let arrStr = str.split(' ');
let wordLength = 0;
let longestWord;
for (let i = 0; i < arrStr.length; i += 1) {
wordLength = arrStr[1].length;
if (arrStr[i].length > wordLength) {
longestWord = arrStr[i];
return longestWord;
}
}
};
// Вызовы функции для проверки
console.log(
findLongestWord("The quick brown fox jumped over the lazy dog")
); // вернет 'jumped'
console.log(
findLongestWord("Google do a roll")
); // вернет 'Google'
console.log(
findLongestWord("May the force be with you")
); // вернет 'force'
'use strict';
const findLongestWord = function(str) {
if (!/^[a-zA-Z0-9\s]*$/.test(str)) {
return 'содержит посторонние символы!';
}
let arrStr = str.split(' ');
let longestWord = arrStr[0];
for (let i = 1; i < arrStr.length; i++) {
if (arrStr[i].length > longestWord.length) {
longestWord = arrStr[i];
}
}
return longestWord;
};
// Вызовы функции для проверки
console.log(
findLongestWord("The quick brown fox jumped over the lazy dog")
); // вернет 'jumped'
console.log(
findLongestWord("Google do a gooooogle roll")
); // вернет 'Google'
console.log(
findLongestWord("May the force be with! you")
); // вернет 'force'
Используй reduce для поиска самого длинного слова:
function findLongestWord(str) {
return str.split(' ').reduce((a, b) => (b.length > a.length) ? b : a);
};
console.log(findLongestWord('There is the longest word in a string!'));
Если под проверкой на пунктуацию вы имели в виду "удаление" этих символов , то можно использовать replace:
function findLongestWord(str) {
var punctRE = /[\u2000-\u206F\u2E00-\u2E7F\\'!"#$%&()*+,\-.\/:;<=>?@\[\]^_`{|}~]/g;
return str.replace(punctRE, '').split(' ').reduce((a, b) => (b.length > a.length) ? b : a);
};
console.log(findLongestWord('This, -/ is #! an $ % ^ & * ex32ample ;: {} of a = -_432 string dsa35!with `~)() punctuation'));
Термин "слово" употребляешь в контексте регулярных выражений? В регулярках "слово" - это непрерывная последовательность букв, цифр и знака нижнее подчеркивание _
function findLongestWord (input) {
return input
.split(/\W+/)
.reduce(
function (longest, word) {
return word.length > longest.length
? word
: longest;
},
''
);
}
console.log(findLongestWord('aaa bbbbbbbb !ccc!!!!!!!!!!!!!!')); // bbbbbbbb
console.log(findLongestWord('aaa bb_b')); // bb_b
Апостиль в Лос-Анджелесе без лишних нервов и бумажной волокиты
Основные этапы разработки сайта для стоматологической клиники
Продвижение своими сайтами как стратегия роста и независимости