瀏覽代碼

HW YB2NKR8B2LL done

Varvara Huza 3 年之前
父節點
當前提交
bcec6c73bd
共有 2 個文件被更改,包括 172 次插入0 次删除
  1. 16 0
      Homework_9/index.html
  2. 156 0
      Homework_9/main.js

+ 16 - 0
Homework_9/index.html

@@ -0,0 +1,16 @@
+<!DOCTYPE html>
+<html lang="en">
+<head>
+    <meta charset="UTF-8">
+    <meta http-equiv="X-UA-Compatible" content="IE=edge">
+    <meta name="viewport" content="width=device-width, initial-scale=1.0">
+    <title>Document</title>
+</head>
+<body>
+    <select id="countrySelect"></select>
+
+    <select id="citySelect"></select>
+
+    <script src="main.js"></script>
+</body>
+</html>

+ 156 - 0
Homework_9/main.js

@@ -0,0 +1,156 @@
+//то, что мы на занятии делали
+fetch('https://raw.githubusercontent.com/russ666/all-countries-and-cities-json/master/countries.json').then(res => res.json())
+.then(data => {
+    for (let key of Object.keys(data)) {
+        let option = document.createElement('option')
+        option.value = key;
+        option.innerText = key;
+        countrySelect.append(option)
+    }
+
+    countrySelect.onchange = () => {
+        citySelect.innerHTML = ''
+        for (let city of data[countrySelect.value]) {
+            let option = document.createElement('option')
+            option.value = city;
+            option.innerText = city;
+            citySelect.append(option)
+        }
+    }
+})
+
+//sort
+var persons = [
+    {name: "Иван", age: 17},
+    {name: "Мария", age: 35},
+    {name: "Алексей", age: 73},
+    {name: "Яков", age: 12},
+]
+
+function sort (arr, key, isIncrease) {
+    if (isIncrease != undefined && isIncrease == false) {
+        arr.sort((obj, obj2) => obj[key] < obj2[key] ? 1 : -1)
+        return arr;
+    }
+
+    arr.sort((obj, obj2) =>  obj[key] > obj2[key] ? 1 : -1)
+    return arr;
+}
+
+sort(persons, "age");
+sort(persons, "name", false);
+
+//array map
+["1", {}, null, undefined, "500", 700].map(a => {
+    if (typeof a === "string") {
+        a = +a
+    }
+    return a;
+})
+
+//array reduce
+["0", 5, 3, "string", null].reduce((a, b) => (typeof b === "number") ? a * b : a, 1)
+
+//object filter
+var phone = {
+    brand: "meizu",
+    model: "m2",
+    ram: 2,
+    color: "black",
+}
+
+function filter(obj, f) {   
+    for (let [key, value] of Object.entries(obj)) {
+        if (f(key, value) === false) {
+            delete obj[key]
+        }
+    }
+    return obj;
+}
+
+filter(phone,(key,value) => key == "color" || value == 2);
+
+//object map
+function map(obj, f) {
+    let newObj = {}
+    for (let [key, value] of Object.entries(obj)) {
+        newObj = {...newObj, ...f(key, value)}
+    }
+    return newObj
+}
+
+map({name: "Иван", age: 17},function(key,value){
+    var result = {};
+    result[key+"_"] = value + "$";
+    return result;
+}) 
+
+//Sum
+//вариант, где нужно указать, до какого числа считать и шаг
+function progressionSum(lastNumber, step = 1) {
+    if (lastNumber <= 1) {
+        return 1;
+    }
+
+    let sum = number + progressionSum(lastNumber - step, step)
+    return sum;
+}
+//или вариант, где нужно указать, сколько элементов нам нужно сложить, с какого числа начинаем и шаг.. я не шарю в математике я не знаю как правильно простите спасибо
+function progressionSum(summandsNumber, firstNumber = 1, step = 1) {
+    if (summandsNumber < 1) {
+        return 0;
+    }
+
+    let sum = firstNumber + progressionSum(summandsNumber - 1, firstNumber + step, step)
+    return sum;
+}
+
+//HTML Tree
+var someTree = {
+    tagName: "table", //html tag
+    children: [ //вложенные тэги
+        {
+                    tagName: "tr",
+                    children: [
+                        {
+                            tagName: "td",
+                            text: "some text",
+                        },
+                        {
+                            tagName: "td",
+                            text: "some text 2",
+                        }
+                    ]
+        }
+    ],
+    attrs: 
+    {
+        border: 1,
+    },
+}
+
+function treeConstructor(object) {
+    let table = `<${object.tagName}`
+    if("attrs" in object) {
+        for (let [key, value] of Object.entries(object.attrs)) {
+            table +=  ` ${key}="${value}"`
+        }
+    }
+    table += `>`
+    if ("text" in object) {
+        table += object.text
+    }
+    document.write(table)
+
+    if ("children" in object) {
+        for (let child of object.children) {
+            treeConstructor(child)
+        }
+    }  
+
+    table = ''
+    table += `</${object.tagName}>`
+    document.write(table)  
+}
+
+treeConstructor(someTree)