|
@@ -0,0 +1,116 @@
|
|
|
+// sort
|
|
|
+// Сделайте обобщенную функцию сортировки массива
|
|
|
+var persons = [{
|
|
|
+ name: "Иван",
|
|
|
+ age: 17
|
|
|
+},
|
|
|
+{
|
|
|
+ name: "Мария",
|
|
|
+ age: 35
|
|
|
+},
|
|
|
+{
|
|
|
+ name: "Алексей",
|
|
|
+ age: 73
|
|
|
+},
|
|
|
+{
|
|
|
+ name: "Яков",
|
|
|
+ age: 12
|
|
|
+},
|
|
|
+]
|
|
|
+
|
|
|
+function sort(array, key, increase = true) {
|
|
|
+if (increase) {
|
|
|
+ array.sort(function (a, b) {
|
|
|
+ if (a[key] > b[key]) {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ if (a[key] < b[key]) {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ });
|
|
|
+} else {
|
|
|
+ array.sort(function (a, b) {
|
|
|
+ if (a[key] < b[key]) {
|
|
|
+ return 1;
|
|
|
+ }
|
|
|
+ if (a[key] > b[key]) {
|
|
|
+ return -1;
|
|
|
+ }
|
|
|
+ return 0;
|
|
|
+ });
|
|
|
+}
|
|
|
+return array;
|
|
|
+};
|
|
|
+
|
|
|
+// array map
|
|
|
+// Используя Array.map приведите все строки в массиве к числу. Элементы других типов оставьте как есть
|
|
|
+
|
|
|
+let arrayMap = ["1", {}, null, undefined, "500", 700];
|
|
|
+
|
|
|
+let arrayMap2 = arrayMap.map((item) => {
|
|
|
+ if (typeof item == "string") return isNaN(parseInt(item, 10)) ? item : parseInt(item, 10);
|
|
|
+ return item;
|
|
|
+});
|
|
|
+
|
|
|
+// array reduce
|
|
|
+// Получите произведение всех чисел в массиве, используя Array.reduce. Не обрабатывайте типы данных, не являющиеся числом.
|
|
|
+
|
|
|
+let arrayReduce = ["0", 5, 3, "string", null];
|
|
|
+
|
|
|
+let arrPow = arrayReduce.reduce((a, b) => (typeof b == "number" ? a * b : a), 1);
|
|
|
+
|
|
|
+console.log(arrPow);
|
|
|
+
|
|
|
+// object filter
|
|
|
+// Напишите свою реализацию Array.filter для объектов
|
|
|
+
|
|
|
+var phone = {
|
|
|
+ brand: "meizu",
|
|
|
+ model: "m2",
|
|
|
+ ram: 2,
|
|
|
+ color: "black",
|
|
|
+};
|
|
|
+
|
|
|
+function objFilter(obj) {
|
|
|
+ let obj2 = {};
|
|
|
+ for (let key in obj) {
|
|
|
+ if (key == "color" || obj[key] == 2) {
|
|
|
+ obj2[key] = obj[key];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return obj2;
|
|
|
+}
|
|
|
+
|
|
|
+console.log(objFilter(phone));
|
|
|
+
|
|
|
+// object map
|
|
|
+// Напишите свою реализацию Array.map для объектов
|
|
|
+
|
|
|
+let object = {
|
|
|
+ name: "Иван",
|
|
|
+ age: 17
|
|
|
+};
|
|
|
+
|
|
|
+function map(obj) {
|
|
|
+ let temp = {};
|
|
|
+ for (let i in obj) {
|
|
|
+ temp[i + '_'] = i + '$';
|
|
|
+ }
|
|
|
+ return temp;
|
|
|
+}
|
|
|
+
|
|
|
+console.log(map(object))
|
|
|
+
|
|
|
+// Sum
|
|
|
+// Напишите функцию, который будет считать сумму арифметической прогрессии рекурсивно
|
|
|
+
|
|
|
+
|
|
|
+function progression( num, increment, rows) {
|
|
|
+ if (rows <= 1) {
|
|
|
+ return num;
|
|
|
+ }
|
|
|
+ return num + progression(num + increment, increment, rows - 1)
|
|
|
+}
|
|
|
+
|
|
|
+console.log(progression( 1,4, 8));
|