Задача.
Правильно ли записана функция 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
Айфон мало держит заряд, разбираемся с проблемой вместе с AppLab
Перевод документов на английский язык: Важность и ключевые аспекты
Есть два поля в mysql один типа timestamp другой dateКак перенести (обновить) правильно из поля timestamp в поле date
Есть такая задача выбрать покупателей, у которых возраст от 10 до 50 лет? Для решения задачи написал такой скрипт
Есть своя, самописная, функция хэширования пароля (не суть важно что конкретно делает сама функция, больше интересен теоретический аспект...