Alex 2 gadi atpakaļ
vecāks
revīzija
13b4c0156a
2 mainītis faili ar 149 papildinājumiem un 0 dzēšanām
  1. 17 0
      07/README.md
  2. 132 0
      07/script.js

+ 17 - 0
07/README.md

@@ -0,0 +1,17 @@
+### Домашнее задание. Функции 2, ES6
+* **ES6**
+    * function es6()
+* **sort**
+    * function sort(arr, key='age', boolean=true)
+* **array map**
+    * function arrayMap(arr)
+* **array reduce**
+    * function arrayReduce(arr)
+* **object filter**
+    * function objectFilter(obj, func)
+* **object map**
+    * function map(obj, func)
+* **Sum**
+    * function sums(n)
+* **HTML Tree**
+    * function htmlTree(someTree, str = '')

+ 132 - 0
07/script.js

@@ -0,0 +1,132 @@
+function es6() {
+    // в прошлом задании я старался использовать es6
+    // вот новые переделанные функции
+    function sum3(a = 0, b = 0, c = 0) {
+        return a + b + c;
+    } // sum3
+    function sum(...arr){
+        return arr.reduce((a, b) => {
+            return a + b;
+        });
+    } // sum
+} // ES6
+
+function sort(arr, key='age', boolean=true) {
+    for (let j = arr.length-1; j > 0; j--) {
+        for (let i = 0; i < j; i++) {
+            if (boolean ? arr[i][key] > arr[i + 1][key]: arr[i][key] < arr[i + 1][key]) {
+                let temp = arr[i];
+                arr[i] = arr[i + 1];
+                arr[i + 1] = temp;
+            }
+        }
+    }
+    return arr;
+} // sort
+let persons = [
+    {name: "Иван", age: 17},
+    {name: "Мария", age: 35},
+    {name: "Алексей", age: 73},
+    {name: "Яков", age: 12},
+]; // данные для sort
+console.log(sort(persons, "age",true)); // пример вызова sort
+
+function arrayMap(arr) {
+    return arr.map(item => {
+        return (typeof item === 'string' ? +item : item) || item;
+    });
+} // array map
+console.log(arrayMap(["1", {}, null, undefined, "500", 700])); // пример вызова array map
+
+function arrayReduce(arr) {
+    return arr.reduce((accum, item) => {
+        return typeof(item) === "number" ? accum * item : accum * 1;
+    }, 1);
+} // array reduce
+console.log(arrayReduce(["0", 5, 3, "string", null])); // пример вызова array reduce
+
+function objectFilter(obj, func) {
+    let result = {};
+    for (let key in obj) {
+        if (func(key, obj[key])) {
+            result[key] = obj[[key]];
+        }
+    }
+    return result;
+} // object filter
+let phone = {
+    brand: "meizu",
+    model: "m2",
+    ram: 2,
+    color: "black",
+}; // данные для object filter
+console.log(objectFilter(phone,(key, value) => key === "color" || value === 2)); // пример вызова object filter
+
+function map(obj, func){
+    let result = {};
+    for (const key in obj) {
+        result = Object.assign(result, func(key, obj[key]));
+    }
+    return result;
+} // object map
+console.log(map({name: "Иван", age: 17} ,function(key, value){
+    let result = {};
+    result[key+"_"] = value + "$";
+    return result;
+})); // пример вызова object map
+
+// Рекурсия
+function sums(n) {
+    return (n === 1) ? n : n * sums(n-1);
+} // Sum
+console.log(sums(10)); // пример вызова Sum
+
+function htmlTree(someTree, str = '') {
+    if ('tagName' in someTree) {
+        if ('attrs' in someTree) {
+            let artStr = '';
+            for (const atr in someTree['attrs']) {
+                artStr += `${atr}: ${someTree['attrs'][atr]};`;
+            }
+            str += `<${someTree['tagName']} style=\"${artStr}\">`;
+        }
+        else{
+            str += `<${someTree['tagName']}>`;
+        }
+    }
+    if ('text' in someTree) {
+        str += `${someTree['text']}`;
+    }
+    if ('subTags' in someTree) {
+        for (let i = 0; i < someTree['subTags'].length; i++) {
+            str = htmlTree(someTree['subTags'][i], str);
+        }
+    }
+    str += `</${someTree['tagName']}>`;
+    return str;
+} // HTML Tree
+let someTree = {
+    tagName: "table", //html tag
+    subTags: [ //вложенные тэги
+        {
+            tagName: "tr",
+            subTags: [
+                {
+                    tagName: "td",
+                    text: "some text",
+                },
+                {
+                    tagName: "td",
+                    text: "some text 2",
+                }
+            ]
+        }
+    ],
+    attrs:
+        {
+            border: 1,
+            margin: 10,
+            padding: 1,
+        },
+} // тестовые данные для задания на синий пояс
+console.log(htmlTree(someTree)); // вызов задания на синий пояс