// ДЗ: Функции и области видимости // a // function a(text) { // alert(text); // } // cube // function cube(num = 1) { // if (Number.isNaN(+num)) { // return "Error"; // } else { // return num ** 3; // } // } // avg2 // function avg2(a, b) { // if ( // !Number.isNaN(+a) && // !Number.isNaN(+b) && // typeof +a === "number" && // typeof +b === "number" // ) { // return ((a + b) / 2).toFixed(1); // } else { // return "Error"; // } // } // sum3 // function sum3() { // return arguments[0] + arguments[1] + arguments[2]; // } // intRandom // function intRandom(...range) { // let random; // if (range[0] === range[1] && range[0] < 0 && range[1] < 0) { // return range[0]; // } // range.length > 1 // ? (random = Math.random() * range[1] + range[0]) // : (random = Math.random() * range[0] + 0); // return Math.round(random); // } // greetAll // function greetAll(...anybody) { // return alert("Hello " + anybody.join(", ")); // } // sum // function sum(...numbers) { // alert(numbers.reduce((a, b) => a + b)); // } // Union // let sample = prompt("Введите название задания"); // switch (sample.toLowerCase()) { // case "a": // a("Hello"); // break; // case "cube": // cube(2); // break; // case "avg2": // avg2(5, 5); // break; // case "sum3": // sum3(1, 2, 3); // break; // case "intrandom": // intRandom(10); // break; // case "greetall": // greetAll("Superman", "SpiderMan", "Captain Obvious"); // break; // case "sum": // sum(10, 20, 30, 100); // break; // default: // alert("Введённое задание не найдено"); // } // Union declarative // let sampleDec = prompt("Введите название задания").toLowerCase(); // const tasks = { // a: a("Hello"), // cube: cube(2), // avg2: avg2(5, 5), // sum3: sum3(1, 2, 3), // intrandom: intRandom(10), // greetall: greetAll("Superman", "SpiderMan", "Captain Obvious"), // sum: sum(10, 20, 30, 100), // }; // tasks[sampleDec]; // ДЗ: Функции 2, ES6 // a - simplified // let aSim = (text) => alert(text); // cube - simplified // let cubeSim = (num = 1) => (Number.isNaN(+num) ? "Error" : num ** 3); // avg2 - simplified // let avg2Sim = (a, b) => // !Number.isNaN(+a) && // !Number.isNaN(+b) && // typeof +a === "number" && // typeof +b === "number" // ? ((a + b) / 2).toFixed(1) // : "Error"; // sum && sum3 - simplified // let sumSim = (...arguments) => arguments.reduce((a, b) => a + b); // intRandom - simplified // let intRandomSim = (...range) => { // let random; // if (range[0] === range[1] && range[0] < 0 && range[1] < 0) { // return range[0]; // } // range.length > 1 // ? (random = Math.random() * range[1] + range[0]) // : (random = Math.random() * range[0] + 0); // return Math.round(random); // }; // greetAll - simplified // let greetAllSim = (...anybody) => alert("Hello " + anybody.join(", ")); // sort // const persons = [ // { name: "Иван", age: 17 }, // { name: "Мария", age: 35 }, // { name: "Алексей", age: 73 }, // { name: "Яков", age: 12 }, // ]; // function sort(obj, field, asc = true) { // if (asc) { // for (let i = 0, endI = obj.length - 1; i < endI; i++) { // for (let j = 0, endJ = endI - i; j < endJ; j++) { // if (obj[j][field] > obj[j + 1][field]) { // let swap = obj[j]; // obj[j] = obj[j + 1]; // obj[j + 1] = swap; // } // } // } // } else { // for (let i = 0, endI = obj.length - 1; i < endI; i++) { // for (let j = 0, endJ = endI - i; j < endJ; j++) { // if (obj[j][field] < obj[j + 1][field]) { // let swap = obj[j]; // obj[j] = obj[j + 1]; // obj[j + 1] = swap; // } // } // } // } // return obj; // } // console.log(sort(persons, "age", false)); // array map // const arrayMap = ["1", {}, null, undefined, "500", 700]; // const newArrayMap = arrayMap.map((value) => // typeof +value === "number" && value !== null && !Number.isNaN(+value) // ? +value // : value // ); // console.log(newArrayMap); // array reduce // const arrayReduce = ["0", 5, 3, "string", null]; // const resultArrayReduce = arrayReduce.reduce(function (prev, curr) { // if (typeof curr === "number") { // prev *= curr; // } // return prev; // }, 1); // console.log(resultArrayReduce); // object filter // const phone = { // brand: "meizu", // model: "m2", // ram: 2, // color: "black", // }; // function filter(obj, func) { // const newObj = {}; // for (let [key, value] of Object.entries(obj)) { // if (func(key, value)) { // newObj[key] = value; // } // } // return newObj; // } // console.log(filter(phone, (key, value) => key == "color" || value == 2)); // object map // const person = { // name: "Иван", // age: 17, // }; // function map(obj, func) { // let newObj = {}; // for (let [key, value] of Object.entries(obj)) { // if (func(key, value)) { // newObj[key] = { ...func(key, value) }; // } // } // let result = {}; // for (let key in newObj) { // result = Object.assign(result, newObj[key]); // } // return result; // } // console.log( // map(person, function (key, value) { // let result = {}; // result[key + "_"] = value + "$"; // return result; // }) // ); // Рекурсия // Sum // function recSum(n) { // if (n < 1) return 1; // return n + recSum(n - 1); // } // console.log(recSum(5)); // HTML Tree // const someTree = { // tagName: "table", // subTags: [ // { // tagName: "tr", // subTags: [ // { // tagName: "td", // text: "some text", // content: "Text", // }, // { // tagName: "td", // text: "some text 2", // content: "Text", // }, // ], // }, // ], // attrs: { // border: 1, // }, // }; // let constructor = ""; // function recConstr(tree) { // if (tree.tagName) { // constructor += `<${tree.tagName} ${ // tree.attrs ? [...Object.keys(tree.attrs)] + "=" : "" // }${ // tree.attrs ? "'" + [...Object.values(tree.attrs)] + "'" : "" // } class='obj${ // tree.tagName.slice(0, 1).toUpperCase() + tree.tagName.slice(1) // }'>`; // tree.content ? (constructor += `${tree.content}`) : ""; // if (tree.subTags) { // for (let i = 0; i < tree.subTags.length; i++) { // recConstr({ ...tree.subTags[i] }); // } // } // constructor += ``; // return constructor; // } else { // return "Error"; // } // } // document.write(recConstr(someTree));