# Домашнее задание. Функции 2, ES6 ## ES6 Переделайте предыдущее ДЗ используя максимум возможностей **ES6**. Отметьте облегчение (или утяжеление) синтаксиса. ## 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,(key,value) => 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$"} ```