Browse Source

HW<5> done

Евгения Акиншина 3 years ago
parent
commit
7be58acc90
2 changed files with 322 additions and 0 deletions
  1. 13 0
      js05/index.html
  2. 309 0
      js05/js/main.js

+ 13 - 0
js05/index.html

@@ -0,0 +1,13 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=\, initial-scale=1.0">
+    <link rel="stylesheet" href="css/style.css">
+    <title>HW5</title>
+</head>
+<body>
+    <script src='js/main.js'></script>
+</body>
+</html>

+ 309 - 0
js05/js/main.js

@@ -0,0 +1,309 @@
+// 3 persons
+// array 1
+var a = {
+    name: "Ivan",
+    surname: "Ivanov",
+}
+
+// array 2
+var b = {
+    name: "Taras",
+    surname: "Tarasov",
+}
+
+// array 3
+var c = {
+    name: "Petro",
+    surname: "Petrov",
+}
+
+// different fields
+a.age = 33,
+b.sex = "male",
+c.fathername = "Petrovi4"
+
+// fields check
+// option 1
+let optionalField = ["age", "sex", "fathername"];
+let choiceArray = prompt("Выберите массив a, b, c: ");
+
+if (choiceArray === "a") {
+    for (let i of optionalField) {
+        if(i in a) {
+            alert("Необязательное после для массива а: " + i);
+        }
+    } 
+} 
+else if (choiceArray === "b") {
+    for (let i of optionalField) {
+        if(i in b) {
+            alert("Необязательное после для массива b: " + i);
+        }
+    } 
+} else if (choiceArray === "c") {
+    for (let i of optionalField) {
+        if(i in c) {
+            alert("Необязательное после для массива c: " + i);
+        }
+    } 
+} else {
+    alert("Ошибка!");
+}
+
+// option 2
+let choiceArray = prompt("Выберите массив a, b, c: ");
+let choiceArray1 = 'a';
+let choiceArray2 = 'b';
+let choiceArray3 = 'c';
+
+if(choiceArray === choiceArray1) {
+    alert("Необязательное после для массива а: age");
+} else if(choiceArray === choiceArray2) {
+    alert("Необязательное после для массива b: sex");
+} else if(choiceArray === choiceArray3) {
+    alert("Необязательное после для массива c: fathername");
+} else {
+    alert("Ошибка!");
+}
+
+// array of persons
+let persons = ['a', 'b', 'c'];
+
+let a = { 
+    name: "Ivan", 
+    surname: "Ivanov" 
+}
+let b = { 
+    name: "Taras", 
+    surname: "Tarasov" 
+}
+let c = { 
+    name: "Petro", 
+    surname: "Petrov" 
+}
+
+persons.a = { name: "Ivan", surname: "Ivanov"};
+persons.b = { name: "Taras", surname: "Tarasov"};
+persons.c = { name: "Petro", surname: "Petrov"};
+
+// loop of persons
+for (let i in persons) {
+    console.log(persons[i]);
+}
+
+// loop of name and surname
+for (var key in persons) {
+    console.log(persons[key]);
+}
+// or
+for (let i in persons) {
+    console.log(persons[i]["name"], persons[i]["surname"]);
+}
+
+// loop of loop of values
+for (let i in persons) {
+    for (let j in persons[i]) {
+        console.log(persons[i][j]);
+    }
+}
+
+// fullName
+for (let i in persons) {
+    if (persons[i]["fathername"]) {
+        persons[i].fullName = persons[i]["name"] + persons[i]["fathername"] + persons[i]["surname"];
+    } else {
+        persons[i].fullName = persons[i]["name"] + persons[i]["surname"];
+    }
+}
+
+// serialize
+let changeLine = JSON.strigify(persons);
+console.log(changeLine);
+
+// deserialize
+let changeArray = JSON.parse("[{\"name\":\"Ivan\",\"surname\":\"Ivanov\",\"age\":33,\"fullName\":\"IvanIvanov\"]");
+changeArray.push(persons);
+console.log(changeArray);
+
+// HTML
+//
+let persons = ['a', 'b', 'c'];
+
+let a = { 
+    name: "Ivan", 
+    surname: "Ivanov",
+}
+let b = { 
+    name: "Taras", 
+    surname: "Tarasov",
+}
+let c = { 
+    name: "Petro", 
+    surname: "Petrov",
+}
+
+persons = [a, b, c];
+
+//
+var str = "<table border='1'>"
+str += "<tr><th>Persons</th><th>name</th><th>surname</th></tr>"
+for(let i = 0; i < persons.length; i++) {
+    if(i % 2 == 1) {
+        str += `<tr><td>${i}</td>
+        <td>${persons[i]["name"]}</td>
+        <td>${persons[i]["surname"]}</td>`
+    }
+    else {
+        str += `<tr><td>${i}</td>
+        <td>${persons[i]["name"]}</td>
+        <td>${persons[i]["surname"]}</td>`
+    }
+}
+
+str += "</table>"
+document.write(str)
+
+// HTML optional fields
+//
+let persons = ['a', 'b', 'c'];
+
+let a = { 
+    name: "Ivan", 
+    surname: "Ivanov",
+    age: 33,
+}
+let b = { 
+    name: "Taras", 
+    surname: "Tarasov",
+    sex: "male",
+}
+let c = { 
+    name: "Petro", 
+    surname: "Petrov",
+    fathername: "Petrovi4",
+}
+
+persons = [a, b, c];
+
+//
+let str = "<table border='1'>"
+str += "<tr><th>Persons</th><th>name</th><th>surname</th><th>age</th><th>fathername</th><th>sex</th></tr>"
+for(let i = 0; i < persons.length; i++) {
+    if(i % 2 == 1) {
+        str += `<tr><td>${i}</td>
+        <td>${persons[i]["name"]}</td>
+        <td>${persons[i]["surname"]}</td>
+        <td>${persons[i]["age"]}</td>
+        <td>${persons[i]["fathername"]}</td>
+        <td>${persons[i]["sex"]}</td></tr>`
+    }
+    else {
+        str += `<tr><td>${i}</td>
+        <td>${persons[i]["name"]}</td>
+        <td>${persons[i]["surname"]}</td>
+        <td>${persons[i]["age"]}</td>
+        <td>${persons[i]["fathername"]}</td>
+        <td>${persons[i]["sex"]}</td></tr>`
+    }
+}
+
+str += "</table>"
+document.write(str)
+
+// HTML tr color
+let str = "<table border='1'>"
+str += "<tr><th>Persons</th><th>name</th><th>surname</th><th>age</th><th>fathername</th><th>sex</th></tr>"
+for(let i = 0; i < persons.length; i++) {
+    if(i % 2 == 1) {
+        str += `<tr style='background: cyan'><td>${i}</td>
+        <td>${persons[i]["name"]}</td>
+        <td>${persons[i]["surname"]}</td>
+        <td>${persons[i]["age"]}</td>
+        <td>${persons[i]["fathername"]}</td>
+        <td>${persons[i]["sex"]}</td></tr>`
+    }
+    else {
+        str += `<tr style='background: yellow'><td>${i}</td>
+        <td>${persons[i]["name"]}</td>
+        <td>${persons[i]["surname"]}</td>
+        <td>${persons[i]["age"]}</td>
+        <td>${persons[i]["fathername"]}</td>
+        <td>${persons[i]["sex"]}</td></tr>`
+    }
+}
+
+str += "</table>"
+document.write(str)
+
+// Задание на синий пояс.
+var someTree = {
+    tagName: "table",
+    subTags: [{
+        tagName: "tr",
+        subTags: [{
+            tagName: "td",
+            text: "some text"
+        }, {
+            tagName: "td",
+            text: "some text 2"
+        }]
+    }],
+    attrs: {
+        border: 1
+    }
+}
+    
+function createElem(tagName, attrs, text) {
+    var elem = document.createElement(tagName);
+    if (attrs)
+        for (var name in attrs) elem.setAttribute(name, attrs[name]);
+    if (text) elem.textContent = text;
+    return elem
+}
+    
+function walker(tree) {
+    var tagName = tree.tagName,
+        attrs = tree.attrs,
+        text = tree.text,
+        elem = createElem(tagName, attrs, text);
+    if (tree.subTags) tree.subTags.forEach(function(el) {
+        el = walker(el);
+        elem.appendChild(el)
+    });
+    return elem
+}
+
+var table = walker(someTree);
+document.body.appendChild(table);
+
+// destruct array
+let arr = [1,2,3,4,5, "a", "b", "c"];
+let [odd1, odd2, odd3] = arr.filter(item => item%2);
+let [even1, even2] = arr.filter(item => !(item%2));
+let other = ["a", "b", "c"];
+
+// or
+let arr = [1,2,3,4,5, "a", "b", "c"];
+let [odd1, even1, odd2, even2, odd3, ...other] = arr;
+
+// or
+let [odd1, even1, odd2, even2, odd3, ...other] = new Set([1,2,3,4,5, "a", "b", "c"]);
+
+// destruct string
+let arr = [1, "abc"];
+let [number, [s1, s2, s3]] = arr;
+console.log(number, s1, s2,s3);
+
+// destruct 2
+let obj = {name: 'Ivan',
+           surname: 'Petrov',
+           children: [{name: 'Maria'}, {name: 'Nikolay'}]}
+
+let name1 = obj.children[0];
+let name2 = obj.children[1];
+
+// destruct 3
+let arr = [1,2,3,4, 5,6,7,10];
+let a = arr[0];
+let b = arr[1];
+let length = arr.length;