diff --git a/labs/lab3/desc.json b/labs/lab3/desc.json new file mode 100644 index 0000000..8836619 --- /dev/null +++ b/labs/lab3/desc.json @@ -0,0 +1,44 @@ +{ + "number": "3", + "task": "Напишите функцию, которая меняет местами все слова в предложении, начинающиеся с определенной буквы.", + "vars": [ + [ + { + "name": "text", + "desc": "Исходное предложение", + "data": "" + }, + { + "name": "letter", + "desc": "Первая буква заменяемых слов", + "data": "" + } + ], + [ + { + "name": "text", + "desc": "Исходное предложение", + "data": "Петр шел по паперти и милостню просил" + }, + { + "name": "letter", + "desc": "Первая буква заменяемых слов", + "data": "П" + } + ], + [ + { + "name": "text", + "desc": "Исходное предложение", + "data": "Мама мыла раму, а Марина пошла в молл" + }, + { + "name": "letter", + "desc": "Первая буква заменяемых слов", + "data": "М" + } + ] + ], + "scriptpath": "labs/lab3/main.js", + "complete": true +} \ No newline at end of file diff --git a/labs/lab3/main.js b/labs/lab3/main.js new file mode 100644 index 0000000..df063a5 --- /dev/null +++ b/labs/lab3/main.js @@ -0,0 +1,26 @@ +"use strict"; + +function main(formName) { + let result = document.getElementById("result"); + let text = document.forms[formName].elements[0].value; + let letter = document.forms[formName].elements[1].value; + + result.textContent = "Результат: " + changeText(text, letter); +} + +function changeText(text, letter) { + let result = text.split(" "); + let words = result.filter( elem => matchWord(elem, letter) ); + result.forEach( (elem, index, array) => + array[index] = matchWord(elem, letter) ? getWord(words) : elem ); + return result.join(" "); +} + +function matchWord(word, letter) { + return word.charAt(0).toUpperCase() == letter.toUpperCase() +} + +function getWord(words) { + let index = Math.floor(Math.random() * words.length); + return words.splice(index, 1); +}