Здравствуйте есть вот такое задание:
Пользователь вводит последовательность строк, состоящих из слов и чисел, разделенных
пробелами. Признак конца последовательности – пустая строка. Вывести самые короткие и
самые длинные слова в строке
Код ниже.Подскажите ,пожалуйста, как реализовать вывод нескольких строк с максимальной и минимальной длинной(т.е. если в массив входит несколько строк с одинаково короткой или одинаково длинной длиной он вывел их всех,а не только последнюю.)
Прошу прощения за говнокод и за глупую просьбу,если она таковой является.Спасибо.
<script>
function readStrings(obj) {
var str = ' ';
while (true) {
str = prompt("Введите строку текста (слова через пробел)", "");
if (str == '') break;
var words = str.split(' ');
for (var i in words)
if (words[i] != 0) obj.push(words[i]);
}
}
text = [];
readStrings(text);
var minnum = text[0].length;
for (i = 0; i <= text.length - 1; i++) {
if (text[i].length <= minnum) {
var min = text[i];
minnum = text[i].length;
}
}
var maxnum = text[0].length;
for (j = 0; j <= text.length - 1; j++) {
if (text[j].length >= maxnum) {
var max = text[j];
maxnum = text[j].length;
}
}
document.write(min + '<br>' + text + '<br>' + max)
</script>
Это несложно сделать, и, думаю, вариантов существует множество. Можете попробовать сделать вот так. Это достаточно многословный вариант, и на самом деле его можно немного уменьшить, но в таком виде, мне кажется, вам будет проще понять, что, когда и зачем мы делаем:
function readStrings() {
const words = []
while (true) {
const str = prompt("Введите строку текста (слова через пробел)", "")
if (str == "") {
break
}
words.push(...str.split(" "))
}
return words
}
// получаем список всех слов
const words = readStrings()
// группируем слова в объект, где ключ - длина слова,
// а значение - массив слов с этой длиной
const wordsByLegth = words.reduce((acc, v) => {
if (!acc[v.length]) {
acc[v.length] = []
}
acc[v.length].push(v)
return acc
}, {})
// получаем массив всех длин
const keysLength = Object.keys(wordsByLegth).map(v => Number(v))
// получаем минимальную и максимальную длины
const min = Math.min(...keysLength)
const max = Math.max(...keysLength)
// выводим все слова, самые короткие и самые длинные
console.log("Все слова:", words.join(", "))
console.log("Самые короткие слова:", wordsByLegth[min].join(", "))
console.log("Самые длинные слова:", wordsByLegth[max].join(", "))
Кофе для программистов: как напиток влияет на продуктивность кодеров?
Рекламные вывески: как привлечь внимание и увеличить продажи
Стратегії та тренди в SMM - Технології, що формують майбутнє сьогодні
Выделенный сервер, что это, для чего нужен и какие характеристики важны?
Современные решения для бизнеса: как облачные и виртуальные технологии меняют рынок
У меня есть код, который исправляет первую букву каждого слова в инпуте на заглавную букву, очень полезно для инпутов именТак вот данный код...
Как объединить все вложенные массивы в один и если будут повторяющиеся элементы, то убрать ихНапример 12,13 буду встречаться в итоговом едином...