Browse Source

HW8 Function2 ES6

LenDoc 2 years ago
parent
commit
a5000a3cb9
1 changed files with 184 additions and 0 deletions
  1. 184 0
      js/08/main.js

+ 184 - 0
js/08/main.js

@@ -0,0 +1,184 @@
+//ES6
+let a = (text) => alert(text || "default");
+//a();
+//a("hello!");
+//
+var cube3 = (...args) => args.map((num = 1) => num ** 3);
+//console.log(cube3(4, 5, 6, 7))
+//console.log(cube3())
+
+let average2 = (...array) => (array.reduce((a, b) => (a + b / array.length), 0));
+//console.log('среднее число =', average2(10, 20, 30, 50));
+//console.log('среднее число =', average2());
+
+let sum = (...arg) => arg.reduce((a, b) => a + b, 0);
+//console.log('all sum = ', sum(1, 2, 3, 4, 5, 6))
+//console.log('all sum = ', sum())
+
+function greetAll() {
+    let args = ["user"];
+    for (let i = 0; i < arguments.length; i++) {
+        args[i] = arguments[i];
+
+    }
+    return alert("Hello " + args);
+}
+//greetAll()
+//greetAll("Superman")
+//так же в дз с функциями было много вариантов написания функций
+//sort
+var persons = [
+    { name: "Иван", age: 17 },
+    { name: "Мария", age: 35 },
+    { name: "Алексей", age: 73 },
+    { name: "Яков", age: 12 },
+]
+
+function sort(arr, field, value = true) {
+    if (value) {
+        arr.sort(((a, b) => a[field] > b[field] ? 1 : -1))
+    } else {
+        arr.sort(((a, b) => a[field] < b[field] ? 1 : -1))
+    }
+}
+//sort(persons,'age',false);
+//console.log(persons);
+sort(persons, "name", false); //сортирует по имени по убыванию
+console.log(persons);
+
+//array map
+var array = ["1", {}, null, undefined, "500", 700]
+
+var result = array.map(function(item) {
+    var number = Number(item);
+    return isNaN(number) ? item : number
+})
+console.log(result);
+//array reduce
+var arr = ["0", 5, 3, "string", null]
+console.log(arr);
+var res = arr.reduce(function(a, b) {
+    return (typeof(b) === 'number') ? (a *= b) : a;
+}, 1)
+console.log(res);
+
+
+//object filter
+var phone = {
+    brand: "meizu",
+    model: "m2",
+    ram: 2,
+    color: "black",
+};
+
+function filter(object, callback) {
+    for (let key in object) {
+        callback(key, object[key]) || delete object[key];
+    }
+    return object;
+}
+
+filter(phone, (key, value) => key == "color" || value == 2)
+console.log(phone)
+
+//object map
+function map(object, callback) {
+    var obj = {};
+    for (var key in object) Object.assign(obj, callback(key, object[key]));
+    return obj
+}
+
+let new_obj = map({ name: "Иван", age: 17 }, function(key, value) {
+    var result = {};
+    result[key + "_"] = value + "$";
+    return result;
+
+})
+
+console.log(new_obj) //должен вернуть {name_: "Иван$", age_: "17$"}
+
+function sumRec(number) {
+    if (number === 1)
+        return number
+    if (number < 0)
+        return
+    return number + sumRec(number - 1)
+}
+console.log(sumRec(6))
+    //HTML Tree
+var body = {
+    tagName: 'body',
+    subTags: [{
+            tagName: 'div',
+            subTags: [{
+                    tagName: 'span',
+                    text: "Enter a data please:",
+                },
+                {
+                    tagName: 'br',
+                },
+                {
+                    tagName: 'input',
+                    attrs: {
+                        type: 'text',
+                        id: 'name'
+                    }
+                },
+                {
+                    tagName: 'input',
+                    attrs: {
+                        type: 'text',
+                        id: 'surname'
+                    }
+                }
+            ],
+        },
+        {
+            tagName: 'div',
+            subTags: [{
+                    tagName: 'button',
+                    text: "OK",
+                    attrs: {
+
+                        id: 'ok'
+                    }
+                },
+                {
+                    tagName: 'button',
+                    text: "Cancel",
+                    attrs: {
+                        id: 'cancel'
+                    }
+
+                },
+            ],
+
+        },
+    ],
+}
+
+function createElem(tagName, attrs, text, id) {
+    var tagElem = document.createElement(tagName);
+    if (attrs)
+        for (var name in attrs) tagElem.setAttribute(name, attrs[name]);
+    if (text) tagElem.textContent = text;
+    if (id) tagElem.id = id;
+    return tagElem
+}
+
+function createBody(body) {
+    var tagName = body.tagName,
+        attrs = body.attrs,
+        text = body.text,
+        id = body.id,
+        elem = createElem(tagName, attrs, text, id);
+    if (body.subTags)
+        body.subTags.forEach(function(el) {
+            el = createBody(el);
+            elem.appendChild(el)
+        });
+    return elem
+}
+
+var table = createBody(body);
+document.body.appendChild(table);