|
@@ -0,0 +1,132 @@
|
|
|
+function es6() {
|
|
|
+ // в прошлом задании я старался использовать es6
|
|
|
+ // вот новые переделанные функции
|
|
|
+ function sum3(a = 0, b = 0, c = 0) {
|
|
|
+ return a + b + c;
|
|
|
+ } // sum3
|
|
|
+ function sum(...arr){
|
|
|
+ return arr.reduce((a, b) => {
|
|
|
+ return a + b;
|
|
|
+ });
|
|
|
+ } // sum
|
|
|
+} // ES6
|
|
|
+
|
|
|
+function sort(arr, key='age', boolean=true) {
|
|
|
+ for (let j = arr.length-1; j > 0; j--) {
|
|
|
+ for (let i = 0; i < j; i++) {
|
|
|
+ if (boolean ? arr[i][key] > arr[i + 1][key]: arr[i][key] < arr[i + 1][key]) {
|
|
|
+ let temp = arr[i];
|
|
|
+ arr[i] = arr[i + 1];
|
|
|
+ arr[i + 1] = temp;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return arr;
|
|
|
+} // sort
|
|
|
+let persons = [
|
|
|
+ {name: "Иван", age: 17},
|
|
|
+ {name: "Мария", age: 35},
|
|
|
+ {name: "Алексей", age: 73},
|
|
|
+ {name: "Яков", age: 12},
|
|
|
+]; // данные для sort
|
|
|
+console.log(sort(persons, "age",true)); // пример вызова sort
|
|
|
+
|
|
|
+function arrayMap(arr) {
|
|
|
+ return arr.map(item => {
|
|
|
+ return (typeof item === 'string' ? +item : item) || item;
|
|
|
+ });
|
|
|
+} // array map
|
|
|
+console.log(arrayMap(["1", {}, null, undefined, "500", 700])); // пример вызова array map
|
|
|
+
|
|
|
+function arrayReduce(arr) {
|
|
|
+ return arr.reduce((accum, item) => {
|
|
|
+ return typeof(item) === "number" ? accum * item : accum * 1;
|
|
|
+ }, 1);
|
|
|
+} // array reduce
|
|
|
+console.log(arrayReduce(["0", 5, 3, "string", null])); // пример вызова array reduce
|
|
|
+
|
|
|
+function objectFilter(obj, func) {
|
|
|
+ let result = {};
|
|
|
+ for (let key in obj) {
|
|
|
+ if (func(key, obj[key])) {
|
|
|
+ result[key] = obj[[key]];
|
|
|
+ }
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+} // object filter
|
|
|
+let phone = {
|
|
|
+ brand: "meizu",
|
|
|
+ model: "m2",
|
|
|
+ ram: 2,
|
|
|
+ color: "black",
|
|
|
+}; // данные для object filter
|
|
|
+console.log(objectFilter(phone,(key, value) => key === "color" || value === 2)); // пример вызова object filter
|
|
|
+
|
|
|
+function map(obj, func){
|
|
|
+ let result = {};
|
|
|
+ for (const key in obj) {
|
|
|
+ result = Object.assign(result, func(key, obj[key]));
|
|
|
+ }
|
|
|
+ return result;
|
|
|
+} // object map
|
|
|
+console.log(map({name: "Иван", age: 17} ,function(key, value){
|
|
|
+ let result = {};
|
|
|
+ result[key+"_"] = value + "$";
|
|
|
+ return result;
|
|
|
+})); // пример вызова object map
|
|
|
+
|
|
|
+// Рекурсия
|
|
|
+function sums(n) {
|
|
|
+ return (n === 1) ? n : n * sums(n-1);
|
|
|
+} // Sum
|
|
|
+console.log(sums(10)); // пример вызова Sum
|
|
|
+
|
|
|
+function htmlTree(someTree, str = '') {
|
|
|
+ if ('tagName' in someTree) {
|
|
|
+ if ('attrs' in someTree) {
|
|
|
+ let artStr = '';
|
|
|
+ for (const atr in someTree['attrs']) {
|
|
|
+ artStr += `${atr}: ${someTree['attrs'][atr]};`;
|
|
|
+ }
|
|
|
+ str += `<${someTree['tagName']} style=\"${artStr}\">`;
|
|
|
+ }
|
|
|
+ else{
|
|
|
+ str += `<${someTree['tagName']}>`;
|
|
|
+ }
|
|
|
+ }
|
|
|
+ if ('text' in someTree) {
|
|
|
+ str += `${someTree['text']}`;
|
|
|
+ }
|
|
|
+ if ('subTags' in someTree) {
|
|
|
+ for (let i = 0; i < someTree['subTags'].length; i++) {
|
|
|
+ str = htmlTree(someTree['subTags'][i], str);
|
|
|
+ }
|
|
|
+ }
|
|
|
+ str += `</${someTree['tagName']}>`;
|
|
|
+ return str;
|
|
|
+} // HTML Tree
|
|
|
+let someTree = {
|
|
|
+ tagName: "table", //html tag
|
|
|
+ subTags: [ //вложенные тэги
|
|
|
+ {
|
|
|
+ tagName: "tr",
|
|
|
+ subTags: [
|
|
|
+ {
|
|
|
+ tagName: "td",
|
|
|
+ text: "some text",
|
|
|
+ },
|
|
|
+ {
|
|
|
+ tagName: "td",
|
|
|
+ text: "some text 2",
|
|
|
+ }
|
|
|
+ ]
|
|
|
+ }
|
|
|
+ ],
|
|
|
+ attrs:
|
|
|
+ {
|
|
|
+ border: 1,
|
|
|
+ margin: 10,
|
|
|
+ padding: 1,
|
|
|
+ },
|
|
|
+} // тестовые данные для задания на синий пояс
|
|
|
+console.log(htmlTree(someTree)); // вызов задания на синий пояс
|