Browse Source

HW tree structure: SOME changes

OleksiiL 1 year ago
parent
commit
bc160a70dc
2 changed files with 242 additions and 49 deletions
  1. 4 5
      Homework_15/tree_structure.js
  2. 238 44
      Homework_16/associative_arrays.js

+ 4 - 5
Homework_15/tree_structure.js

@@ -208,7 +208,7 @@ while (prompt() === null);
 
 // alert(fn(7));
 
-// chess one line-------------------------------------------------------------------------------------------;
+// chess online-------------------------------------------------------------------------------------------;
 
 // let str = "";
 
@@ -258,7 +258,7 @@ console.log(cubes);
 // multiply table-------------------------------------------------------------------------------------------;
 
 let multiplication = Array(11);
-for (let i = 1; i < 11; i++) {
+for (let i = 0; i < 11; i++) {
   multiplication[i] = [...Array(11)].map((_, j) => i * j);
 }
 
@@ -308,11 +308,10 @@ document.write("<table>");
 let lines = (line = 6),
   a = ".",
   b = "#";
-for (; line-- > 0; )
+for (; line-- > 0; ) {
   console.log(
     Array(line + 1).join(a) +
       Array(2 * (lines - line)).join(b) +
       Array(line + 1).join(a)
   );
-
-// Задание на черный пояс: Электронная гадалка--------------------------------------------------------------;
+}

+ 238 - 44
Homework_16/associative_arrays.js

@@ -43,26 +43,44 @@
 
 // fields check---------------------------------------------------------------------------------------------------------------------------------------------------;
 
-// let a = {
-//   name: "Alexandra",
-//   surname: "Olefirenko",
-//   sex: "female",
-//   age: 21,
-// };
+let a = {
+  name: "Alexandra",
+  surname: "Olefirenko",
+  sex: "female",
+  age: 21,
+};
 
-// let b = {
-//   name: "Platon",
-//   surname: "Plokhenko",
-//   education: "Bachelor degree",
-//   age: 18,
-// };
+let b = {
+  name: "Platon",
+  surname: "Plokhenko",
+  education: "Bachelor degree",
+  age: 18,
+};
 
-// let c = {
-//   name: "Sofia",
-//   surname: "Sternenko",
-//   fathername: "Vyktoryvna",
-//   age: 27,
-// };
+let c = {
+  name: "Sofia",
+  surname: "Sternenko",
+  fathername: "Vyktoryvna",
+  age: 27,
+};
+
+if (Object.keys(a).includes("age", "sex")) {
+  console.log(a.sex, a.age);
+} else {
+  console.log("Not here");
+}
+
+if (Object.keys(b).includes("age", "education")) {
+  console.log(b.sex, b.education);
+} else {
+  console.log("Not here");
+}
+
+if (Object.keys(c).includes("fathername", "age")) {
+  console.log(c.fathername, c.age);
+} else {
+  console.log("Not here");
+}
 
 // array of persons---------------------------------------------------------------------------------------------------------------------------------------------------;
 
@@ -83,6 +101,7 @@ let persons = [
   (c = {
     name: "Sofia",
     surname: "Sternenko",
+    fathername: "Vyktoryvna",
     sex: "F",
     age: 27,
     region: "Kyiv",
@@ -106,11 +125,12 @@ for (let i = 0; i < persons.length; i++) {
     for (key in persons[i]) {
     }
     console.log(
-      "name " +
+      "name: " +
         " " +
         persons[i].name +
+        "," +
         " " +
-        "surname " +
+        "surname: " +
         " " +
         persons[i].surname
     );
@@ -121,21 +141,39 @@ for (let i = 0; i < persons.length; i++) {
 
 // loop of loop of values---------------------------------------------------------------------------------------------------------------------------------------------------;
 
+for (i = 0; i <= persons.length; i++) {
+  for (let key in persons[i]) {
+    console.log(key + ": " + persons[i][key]);
+  }
+}
 // fullName---------------------------------------------------------------------------------------------------------------------------------------------------;
 
-// for (var i = 0; i < persons.length; i++) {
-//   for (var key in persons[i]) {
-//     persons[i].fullName = persons[i].fullName =
-//       persons[i].name + " " + persons[i].surname;
-//   }
-// }
+for (let i = 0; i <= persons.length; i++) {
+  for (let key in persons[i]) {
+    if ("fathername" in persons[i]) {
+      console.log(
+        (persons[i].fullName =
+          persons[i].surname +
+          " " +
+          persons[i].name +
+          " " +
+          persons[i].fathername)
+      );
+    } else {
+      console.log(
+        (persons[i].fullName = persons[i].surname + " " + persons[i].name)
+      );
+    }
+  }
+}
 // serialize---------------------------------------------------------------------------------------------------------------------------------------------------;
 
-// JSON.stringify(persons);
+JSON.stringify(persons);
 
 // deserialize---------------------------------------------------------------------------------------------------------------------------------------------------;
 
-// JSON.parse('{"name: Taras, surname: Shevchenko"}');
+let d = JSON.parse('{"name": "Taras", "surname": "Shevchenko"}');
+persons.push(d);
 
 // HTML----------------------------------------------------------------------------------------------------------------------------------------------------------;
 document.write("</table>");
@@ -160,30 +198,173 @@ for (let i = 0; i < persons.length; i++) {
 document.write("</table>");
 
 // HTML optional fields---------------------------------------------------------------------------------------------------------------------------------------------------;
+{
+  let headers = persons
+    .reduce((a, b) => a.concat(Object.keys(b)), [])
+    .filter((v, i, s) => s.indexOf(v) === i);
+  str =
+    `<table style = "border: 1px solid black; border-collapse: collapse;"><tr>${headers
+      .map(
+        (e) =>
+          `<th style = "border: 1px solid black; border-collapse: collapse;">${e}</th>`
+      )
+      .join("\n")}</tr>` +
+    persons
+      .map(
+        (e) =>
+          `<tr>${headers
+            .map(
+              (e1) =>
+                `<td style = "border: 1px solid black; border-collapse: collapse;">${
+                  e[e1] ? e[e1] : "-"
+                }</td>`
+            )
+            .join("\n")}</tr>`
+      )
+      .join("\n") +
+    `</table>`;
+
+  document.write(str);
+}
 // HTML tr color---------------------------------------------------------------------------------------------------------------------------------------------------;
 
-document.write("<table>");
-document.write('<tr style="color: red;">');
+{
+  let headers = persons
+    .reduce((a, b) => a.concat(Object.keys(b)), [])
+    .filter((v, i, s) => s.indexOf(v) === i);
+  str =
+    `<table style = "border: 1px solid black; border-collapse: collapse;"><tr style = "background-color: #ffff00;" >${headers
+      .map(
+        (e) =>
+          `<th style = "border: 1px solid black; border-collapse: collapse;">${e}</th>`
+      )
+      .join("\n")}</tr>` +
+    persons
+      .map(
+        (e) =>
+          `<tr style = "background-color: lightgreen;">${headers
+            .map(
+              (e1) =>
+                `<td style = "border: 1px solid black; border-collapse: collapse;">${
+                  e[e1] ? e[e1] : "-"
+                }</td>`
+            )
+            .join("\n")}</tr>`
+      )
+      .join("\n") +
+    `</table>`;
+
+  document.write(str);
+}
+// HTML th optional---------------------------------------------------------------------------------------------------------------------------------------------------;
+// Задание на синий пояс.---------------------------------------------------------------------------------------------------------------------------------------------------;
+// HTML constructor---------------------------------------------------------------------------------------------------------------------------------------------------------;
+let 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",
+          },
+        },
+      ],
+    },
+  ],
+};
 
-for (key in persons[0]) {
-  document.write("<th>" + key + "</th>");
+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;
 }
-document.write("</tr>");
-for (i = 0; i < persons.length; i++) {
-  document.write("<tr >");
-  for (value in persons[i]) {
-    document.write("<td>" + persons[i][value] + "</td>");
-  }
-  document.write("</tr>");
+
+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;
 }
-document.write("</table>");
+var table = walker(body);
+document.body.appendChild(table);
 
-// HTML th optional---------------------------------------------------------------------------------------------------------------------------------------------------;
-// Задание на синий пояс.---------------------------------------------------------------------------------------------------------------------------------------------------;
 // destruct array---------------------------------------------------------------------------------------------------------------------------------------------------;
+{
+  let arr = [1, 2, 3, 4, 5, "a", "b", "c"];
+
+  let evenArray = [];
+  let oddArray = [];
+  let lettersFromArr = [];
+  for (let i = 0; i < arr.length; i++) {
+    if (typeof arr[i] === "number") {
+      if (arr[i] % 2 === 0) {
+        evenArray.push(arr[i]);
+      } else {
+        oddArray.push(arr[i]);
+      }
+    } else {
+      lettersFromArr.push(arr[i]);
+    }
+  }
+
+  let [even1, even2] = evenArray;
+  let [odd1, odd2, odd3] = oddArray;
+}
 
 // destruct string---------------------------------------------------------------------------------------------------------------------------------------------------;
 let arr1 = [1, "abc"];
+
+let [number, [s1, s2, s3]] = arr1;
+
+console.log(number);
+console.log(s1);
+console.log(s2);
+console.log(s3);
+
 // destruct 2---------------------------------------------------------------------------------------------------------------------------------------------------;
 let obj = {
   name: "Ivan",
@@ -191,6 +372,19 @@ let obj = {
   children: [{ name: "Maria" }, { name: "Nikolay" }],
 };
 
+let {
+  children: [{ name: name1 }, { name: name2 }],
+} = obj;
+
+console.log(name1);
+console.log(name2);
 // destruct 3---------------------------------------------------------------------------------------------------------------------------------------------------;
-let arr = [1, 2, 3, 4, 5, 6, 7, 10];
-// Задание на черный пояс---------------------------------------------------------------------------------------------------------------------------------------------------;
+{
+  let arr = [1, 2, 3, 4, 5, 6, 7, 10];
+
+  let { 0: a, 1: b, length } = arr;
+
+  console.log(a);
+  console.log(b);
+  console.log(length);
+}