|
@@ -0,0 +1,231 @@
|
|
|
+// ES6
|
|
|
+
|
|
|
+// Переделайте предыдущее ДЗ используя максимум возможностей ES6. Отметьте облегчение (или утяжеление) синтаксиса.
|
|
|
+
|
|
|
+// function a(text) {
|
|
|
+// return alert(text);
|
|
|
+// };
|
|
|
+
|
|
|
+let a = (text) => {
|
|
|
+ return alert(text);
|
|
|
+};
|
|
|
+
|
|
|
+// function cube(num) {
|
|
|
+// return num * num * num;
|
|
|
+// }
|
|
|
+
|
|
|
+let cube = (num) => {
|
|
|
+ return num * num * num;
|
|
|
+};
|
|
|
+
|
|
|
+// function avg2(a, b) {
|
|
|
+// return ((a + b) / 2);
|
|
|
+// };
|
|
|
+
|
|
|
+let avg2 = (x, y) => {
|
|
|
+ return ((x + y) / 2);
|
|
|
+};
|
|
|
+
|
|
|
+// function sum3(a = 0, b = 0, c = 0) {
|
|
|
+// return (a + b + c);
|
|
|
+// };
|
|
|
+
|
|
|
+let sum3 = (i = 0, j = 0, l = 0) => {
|
|
|
+ return (i + j + l);
|
|
|
+};
|
|
|
+
|
|
|
+// function intRandom(n, m = 0) {
|
|
|
+// return (Math.round(Math.random() * (m - n) + n));
|
|
|
+// };
|
|
|
+
|
|
|
+let intRandom = (m = 0, n = 0) => {
|
|
|
+ return (Math.round(Math.random() * (m - n) + n));
|
|
|
+};
|
|
|
+
|
|
|
+// function greetAll(a) {
|
|
|
+// for (i = 1; i < arguments.length; i++) {
|
|
|
+// a += ', ' + arguments[i];
|
|
|
+// }
|
|
|
+// return 'Hello, ' + a;
|
|
|
+// };
|
|
|
+
|
|
|
+let greetAll = (a, ...params) => {
|
|
|
+ for (var i = 0; i < params.length; i++) {
|
|
|
+ a += ', ' + params[i];
|
|
|
+ }
|
|
|
+ return 'Hello, ' + a;
|
|
|
+};
|
|
|
+
|
|
|
+// function sum(a = 0) {
|
|
|
+// for (i = 1; i < arguments.length; i++) {
|
|
|
+// a += arguments[i];
|
|
|
+// }
|
|
|
+// return a;
|
|
|
+// };
|
|
|
+
|
|
|
+let sum = (a = 0, ...params) => {
|
|
|
+ for (var i = 0; i < params.length; i++) {
|
|
|
+ a += params[i];
|
|
|
+ }
|
|
|
+ return a;
|
|
|
+};
|
|
|
+
|
|
|
+// sort
|
|
|
+
|
|
|
+// Сделайте обобщенную функцию сортировки массива
|
|
|
+
|
|
|
+// var persons = [
|
|
|
+// {name: "Иван", age: 17},
|
|
|
+// {name: "Мария", age: 35},
|
|
|
+// {name: "Алексей", age: 73},
|
|
|
+// {name: "Яков", age: 12},
|
|
|
+// ]
|
|
|
+
|
|
|
+// sort(persons, "age"); //сортирует по возрасту по возрастанию
|
|
|
+// sort(persons, "name", false); //сортирует по имени по убыванию
|
|
|
+
|
|
|
+// Функция позволяет отсортировать любой набор данных по имени поля (второй параметр).
|
|
|
+// Третьим параметром идет необязательный Boolean, который в случае true делает сортировку по возрастанию,
|
|
|
+// в случае false - по убыванию. По умолчанию (без третьего параметра) происходит сортировка по возрастанию.
|
|
|
+
|
|
|
+var persons = [
|
|
|
+ { name: "Иван", age: 17 },
|
|
|
+ { name: "Мария", age: 35 },
|
|
|
+ { name: "Алексей", age: 73 },
|
|
|
+ { name: "Яков", age: 12 },
|
|
|
+]
|
|
|
+
|
|
|
+function sort(array, keys, boolean = true) {
|
|
|
+ array.sort(function (a, b) {
|
|
|
+ if (boolean === true) {
|
|
|
+ if (a[keys] < b[keys]) {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ if (a[keys] < b[keys]) {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ else {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ };
|
|
|
+ });
|
|
|
+ return array;
|
|
|
+}
|
|
|
+
|
|
|
+sort(persons, "age"); //сортирует по возрасту по возрастанию
|
|
|
+sort(persons, "name", false); //сортирует по имени по убыванию
|
|
|
+
|
|
|
+// array map
|
|
|
+
|
|
|
+// Используя Array.map приведите все строки в массиве к числу. Элементы других типов оставьте как есть:
|
|
|
+// ["1", {}, null, undefined, "500", 700]
|
|
|
+// должно превратиться в
|
|
|
+// [1, {}, null, undefined, 500, 700]
|
|
|
+
|
|
|
+var arr = ["1", {}, null, undefined, "500", 700];
|
|
|
+
|
|
|
+let toInt = arr.map(function (element) {
|
|
|
+ let number = parseInt(element);
|
|
|
+ return isNaN(number) ? element : number;
|
|
|
+});
|
|
|
+
|
|
|
+// array reduce
|
|
|
+
|
|
|
+// Получите произведение всех чисел в массиве, используя Array.reduce. Не обрабатывайте типы данных, не являющиеся числом.
|
|
|
+// ["0", 5, 3, "string", null]
|
|
|
+// результат должен быть 15
|
|
|
+
|
|
|
+var arr = ["0", 5, 3, "string", null];
|
|
|
+
|
|
|
+let reduceMult = arr.reduce(function (a, b) {
|
|
|
+ if (typeof (b) === 'number') {
|
|
|
+ a *= b;
|
|
|
+ };
|
|
|
+ return a;
|
|
|
+}, 0);
|
|
|
+
|
|
|
+// object filter
|
|
|
+
|
|
|
+// Напишите свою реализацию Array.filter для объектов:
|
|
|
+
|
|
|
+// var phone = {
|
|
|
+// brand: "meizu",
|
|
|
+// model: "m2",
|
|
|
+// ram: 2,
|
|
|
+// color: "black",
|
|
|
+// };
|
|
|
+
|
|
|
+// filter(phone,(key,value) => key == "color" || value == 2);
|
|
|
+
|
|
|
+// должно вернуть
|
|
|
+
|
|
|
+// {
|
|
|
+// ram: 2,
|
|
|
+// color: "black",
|
|
|
+// }
|
|
|
+
|
|
|
+// Для удаления пары ключ-значение используйте delete. Или сделайте копию объекта.
|
|
|
+
|
|
|
+var phone = {
|
|
|
+ brand: "meizu",
|
|
|
+ model: "m2",
|
|
|
+ ram: 2,
|
|
|
+ color: "black",
|
|
|
+};
|
|
|
+
|
|
|
+function filter(obj, search, val) {
|
|
|
+ var objCopy = {};
|
|
|
+ for (var key in obj) {
|
|
|
+ if (search == key || obj[key] == val) {
|
|
|
+ objCopy[key] = obj[key];
|
|
|
+ };
|
|
|
+ };
|
|
|
+ return objCopy;
|
|
|
+};
|
|
|
+
|
|
|
+// object map
|
|
|
+
|
|
|
+// Напишите свою реализацию Array.map для объектов:
|
|
|
+
|
|
|
+// map({name: "Иван", age: 17},function(key,value){
|
|
|
+// var result = {};
|
|
|
+// result[key+"_"] = value + "$";
|
|
|
+// return result;
|
|
|
+// })
|
|
|
+
|
|
|
+// должен вернуть {name_: "Иван$", age_: "17$"}
|
|
|
+
|
|
|
+var person = {
|
|
|
+ name: "Иван",
|
|
|
+ age: 17
|
|
|
+};
|
|
|
+
|
|
|
+function map(object, callback) {
|
|
|
+ var obj = {};
|
|
|
+ for (var key in object) {
|
|
|
+ Object.assign(obj, callback(key, object[key]));
|
|
|
+ };
|
|
|
+ return obj;
|
|
|
+};
|
|
|
+
|
|
|
+map(person, function (key, value) {
|
|
|
+ var result = {};
|
|
|
+ result[key + "_"] = value + "$";
|
|
|
+ return result;
|
|
|
+});
|
|
|
+
|
|
|
+// Sum
|
|
|
+
|
|
|
+// Напишите функцию, который будет считать сумму арифметической прогрессии рекурсивно.
|
|
|
+
|
|
|
+function progressionSum(n) {
|
|
|
+ if (n == 1) {
|
|
|
+ return 1;
|
|
|
+ };
|
|
|
+ return n + progressionSum(n - 1);
|
|
|
+};
|