# Домашнее задание. Функции 2, jQ ## sort Сделайте обобщенную функцию сортировки массива ```javascript var persons = [ {name: "Иван", age: 17}, {name: "Мария", age: 35}, {name: "Алексей", age: 73}, {name: "Яков", age: 12}, ] sort(persons, "age"); //сортирует по возрасту по возрастанию sort(persons, "name", false); //сортирует по имени по убыванию ``` Функция позволяет отсортировать *любой набор* данных по имени поля (второй параметр). Третьим параметром идет необязательный `Boolean`, который в случае `true` делает сортировку по возрастанию, в случае `false` - по убыванию. По умолчанию (без третьего параметра) происходит сортировка по возрастанию. ## array map Используя `Array.map` приведите все строки в массиве к числу. Элементы других типов оставьте как есть: ```javascript ["1", {}, null, undefined, "500", 700] ``` должно превратиться в ```javascript [1, {}, null, undefined, 500, 700] ``` ## array reduce Получите произведение всех чисел в массиве, используя `Array.reduce`. Не обрабатывайте типы данных, не являющиеся числом. ```javascript ["0", 5, 3, "string", null] ``` результат должен быть 15 ## object filter Напишите свою реализацию `Array.filter` для **объектов**: ```javascript var phone = { brand: "meizu", model: "m2", ram: 2, color: "black", }; filter(phone,function(key,value){ return (key == "color" || value == 2); }); ``` должно вернуть ```javascript { ram: 2, color: "black", } ``` Для удаления пары ключ-значение используйте `delete`. ## object map Напишите свою реализацию `Array.map` для **объектов**: ```javascript map({name: "Иван", age: 17},function(key,value){ var result = {}; result[key+"_"] = value + "$"; return result; }) //должен вернуть {name_: "Иван$", age_: "17$"} ``` ## jqCalculator Сделать калькулятор на jQuery, который позволяет складывать, вычитать, умножать и делить числа. Операции должны быть отдельными кнопками, так же должно быть три поля ввода - для двух операндов и для результата. ## jqUpperCase Сделайте поле ввода (`input type=text`) и кнопку `upperCase`, при нажатии на которую все буквы в поле ввода превратятся в большие ## jqCAPSLOCK Сделайте поле ввода, которое сразу при вводе превращает все буквы в большие. Используйте события `keydown`, `keyup`, `keypress`, `change` или другие. ## jqViewablePassword Сделайте поле ввода пароля с возможностью показать пароль используя поле типа `checkbox`. Наподобие полей ввода пароля WiFi. ## jqRadioCalculator Сделайте калькулятор, только вместо набора кнопок для сложения, вычитания, умножения и деления используйте `input type='radio'` ## jqManyPhones Напишите код, который по нажатию кнопки `` добавляет поле ввода телефона. Количество таких полей ввода неограничено, все они должны находится в одном элементе `
`. ## jqDocumentReady Перенесите код предыдущих заданий в `$(document).ready`, измените место подключения **JS** кода в **HTML** (в ``). ## Черный пояс Расширьте **ManyPhones** возможностью удалять любое поле ввода телефона с помощью ``. Такая кнопка должна быть возле каждого поля ввода.