//ES6 let a = msg => alert(msg); let cube = number => number * number * number; let avg2 = (a, b) => (a + b) / 2; let sum3 = (a = 0, b = 0, c = 0) => a + b + c; let intRandom = (a = 0, b = 0) => Math.round(Math.random() * (b - a)) + a; let greetAll = (...arguments) => { for (let i in arguments) { alert(arguments[i]) } } let sum = (...arguments) => { let sumAll = 0 for (let i in arguments) { sumAll += arguments[i] } return sumAll; } //sort var persons = [ { name: "Иван", age: 17 }, { name: "Мария", age: 35 }, { name: "Алексей", age: 73 }, { name: "Яков", age: 12 }, ] function sort(objectName, keyName, boolean = true) { if (boolean) { objectName.sort((a, b) => a[keyName] > b[keyName] ? 1 : -1) } else { objectName.sort((a, b) => a[keyName] - b[keyName]) } } sort(persons, "age"); //сортирует по возрасту по возрастанию console.log(persons) sort(persons, "name", false); //сортирует по имени по убыванию console.log(persons) //array map let arrToNumber = ["1", {}, null, undefined, "500", 700].map(elem => +elem ? +elem : elem); //array reduce let arrResult = ["0", 5, 3, "string", null].reduce((result, current) => { if (typeof current === "number" && current !== null) { return result * current; } else { return result; } }, 1) //object filter function filter(obj, func) { let newObj = {}; for (let key in obj) { if (func(key, obj[key])) { newObj[key] = obj[key]; } } return newObj; } var phone = { brand: "meizu", model: "m2", ram: 2, color: "black", }; let a = filter(phone, (key, value) => key == "color" || value == 2); console.log(a) //object map function map(obj, func) { let newObj = {}; for (let key in obj) { newObj[(Object.keys(func(key, obj[key])))[0]] = Object.values(func(key, obj[key]))[0]; } return newObj; } let obj2 = map({ name: "Иван", age: 17 }, function (key, value) { var result = {}; result[key + "_"] = value + "$"; return result; }) console.log(obj2)// возвращает {name_: "Иван$", age_: "17$"} //Рекурсия Sum let sum = (firstNumber, step, n) => { return n == 1 ? firstNumber : firstNumber + sum(firstNumber + step, step, n - 1); //сумма арифметической прогресии (начиная с firstNumber, шаг step, n элементов) } //Рекурсия 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 constructorHtml(obj, parent = obj.tagName, childKeyName = "children") { let elem = document.createElement(parent); if (obj[childKeyName]) { for (let child of obj[childKeyName]) { elem.append(constructorHtml(child, parent = child.tagName, childKeyName)); } } if (obj.attrs) { for (let key in obj.attrs) { elem.setAttribute(key, obj.attrs[key]); } } if (obj.text) { elem.innerText = obj.text; } return elem; } document.body.append(constructorHtml(someTree));