diff --git a/labs/lab9/desc.json b/labs/lab9/desc.json index 9ba7c48..f1019df 100644 --- a/labs/lab9/desc.json +++ b/labs/lab9/desc.json @@ -1,14 +1,21 @@ { "number": 9, - "task": "", + "task": "Создайте функцию, которая принимает массив имен супергероев и возвращает массив только имен супергероев, начинающихся на «человек». Верните имена в алфавитном порядке.", "vars": [ [ { - "name": "", - "desc": "", + "name": "names", + "desc": "Имена супергероев, разделенных запятой", "data": "" } + ], + [ + { + "name": "names", + "desc": "Имена супергероев, разделенных запятой", + "data": "Баба Нюра, Супермен, Человек Паук, человек невидимка" + } ] ], - "complete": false + "complete": true } \ No newline at end of file diff --git a/labs/lab9/main.js b/labs/lab9/main.js index 466be91..f800956 100644 --- a/labs/lab9/main.js +++ b/labs/lab9/main.js @@ -3,5 +3,33 @@ function main(formName) { let result = document.getElementById("result"); - result.textContent = "Результат: неопределенно"; + let names = document.forms[formName].elements[0].value; + if (!(typeof names === "string")) { + result.textContent = "Ошибка: names не является строкой!"; + return; + } + + result.textContent = "Результат: " + getNewNames(names); +} + +function getNewNames(names) { + let result = []; + + names = names.split(","); + names.forEach( elem => { + if ( elem.trim().toLowerCase().startsWith("человек") ) { + result.push( elem.trim() ); + } + }); + + result.forEach( (elem, index, array) => + array[index] = elem.split(/\s+/).map(word => word[0].toUpperCase() + word.substring(1)).join(' ') + ); + result.sort(); + + if (result.length == 0) { + return "подходящие имена отсутствуют"; + } else { + return result.join(', '); + } }