# Модуль Проходной бал - 4 ## objectValues **1 балл** Сделать функцию, которая будет вычитывать все значения из объекта и возвращать массив с этими значениями ```javascript var notebook = { brand: "HP", type: "440 G4", model: "Y7Z75EA", ram: 4, size: "14", weight: 1.8, resolution: { width: 1920, height: 1080 }, }; objectValues(notebook) //возвращает ["HP", "440 G4", "Y7Z75EA", 4, "14", 1.8, { width: 1920, height: 1080 } ] ``` ## objectCombine **1 балл** Сделать функцию, которая из двух массивов ключей и значений создает ассоциативный массив или `null` если массивы разной длины: ```javascript objectCombine(['name', 'surname'], ['Donald', 'Trump']) // { name: "Donald", surname: "Trump" } objectCombine(['name', 'surname'], ['Ivan', 'Petrovich', 'Cherezzabornoguzadirischenko']) // null ``` ## choiceBuilder **2 балла** Напилите функцию, которая создает поле выбора `select` или набор `radio` в определенном контейнере: ```javascript choiceBuilder('someId', {default: 'Не указан', male: "Мужской", female: 'Женский'}) ``` если someId - это тэг `SELECT`, то добавляет в него `option` из объекта. Иначе создает radio кнопки ## tableEditor **3 балла** Создайте функцию, которая строит таблицу из массива массивов и позволяет редактировать любую ячейку по даблклику. При даблклике контент ячейки подменяется на `input`. По даблклику по `input` измененые данные заносятся в оригинальный массив и `input` удаляется из ячейки, заменяясь измененным значением. ```javascript var arr = [[1,2],[3,4]] tableEditor('someId', arr) //создает таблицу 2x2, каждую ячейку которой можно подредактировать. Изменения должны вноситься в arr ``` ## formBuilder **4 балла** Накривотивьте функцию, которая из объекта сделает форму в контейнере `someId` ```javascript formBuilder('someId', { login: {type: 'text', placeholder: 'Логин', validator: function(element){ return element.value.length > 2; }}, email: {type: 'email', placeholder: 'Мыло', validator: function(element){ return element.value.indexOf('@') > -1; }}, password1 : {type: 'password', placeholder: 'Пароль', validator: function(element, obj){ return element.value == obj.password2; }}, password2 : {type: 'password', placeholder: 'Пароль еще раз', validator: function(element, obj){ return element.value == obj.password1; }}, }, function(result){ console.log(result) alert('спасибо за заполнение'); }) ``` Функция должна создавать поля ввода с `placeholder`, и кнопку сохранения. По кнопке функция должна проверять все валидаторы, и подсвечивать ошибочное поле красным фоном. В валидаторы передается текущий элемент и объект с текущими значениями полей. Когда валидация успешна, функция должна вызвать третий параметр - функцию-callback и передать в неё объект с результатом