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 += ``; 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)); // вызов задания на синий пояс