### sort ```javascript var persons = [ {name: "Иван", age: 17}, {name: "Мария", age: 35}, {name: "Алексей", age: 73}, {name: "Яков", age: 12}, ] function sort(array, key, bool){ function sortType(a,b){ if(bool === undefined) bool = true; if(bool){ if(a[key] > b[key]) return 1 else return -1 } else{ if(a[key] < b[key]) return 1 else return -1 } } array.sort(sortType); } sort(persons, "age"); sort(persons, "name", false); console.log(persons); ``` ### array map ```javascript var array1 = ["1", {}, null, undefined, "500", 700]; var array2 = array1.map(function(arrayItem){ if(typeof(arrayItem) === "string") return +arrayItem; return arrayItem; }); console.log(array2); ``` ### array reduce ```javascript var array = ["0", 5, 3, "string", null].reduce(function(previousValue, currentValue, index, array){ if(typeof(previousValue) !== "number" ) return currentValue; else if(typeof(currentValue) !== "number") return previousValue; else return previousValue * currentValue; }); console.log(array); ``` ### object filter ```javascript var phone = { brand: "meizu", model: "m2", ram: 2, color: "black", }; function filter(object, validate){ var obj = {}; var keys = Object.keys(object); for (var i = 0; i < keys.length; i++) { if(validate(keys[i], object[keys[i]])) obj[keys[i]] = object[keys[i]]; } return obj; } var phone2 = filter(phone,function(key,value){ return (key == "color" || value == 2); }); console.log(phone2); ``` ### object map ```javascript function map(obj, cond){ var keys = Object.keys(obj); var newObject = {}; var resObject = {}; for (var i = 0; i < keys.length; i++) { newObject = cond(keys[i], obj[keys[i]]) var keys2 = Object.keys(newObject); resObject[keys2[0]] = newObject[keys2[0]]; } return resObject; } var result = map({name: "Иван", age: 17},function(key,value){ var result = {}; result[key+"_"] = value + "$"; return result; }) console.log(result); ``` ### Калькулятор ```javascript var userVar = prompt("Введите выражение"); console.log(userVar); var result = eval(userVar); alert("Ответ: " + result); function eval(userVariableInit){ var userVariable = []; for (var i = 0; i < userVariableInit.length; i++) { userVariable[i] = userVariableInit[i]; } if(userVariable.indexOf("(") > -1) { var userVar = []; do{ var k = 0; var r = 0; var d; for (var i = 0; i < userVariable.length+1; i++) { if(i != 0 && r == 0 && k > 0){ d = i-1; break; } if(userVariable[i] == "("){ k++ r++; } if(userVariable[i] == ")"){ k++ r--; } } console.log(k); console.log(d); userVariable.splice(userVariable.indexOf("("), 2,eval(userVariable.splice(userVariable.indexOf("(") + 1, d - userVariable.indexOf("(") - 1))); } while(userVariable.indexOf("(") > -1) userVar = userVariable; } else var userVar = userVariable; var array = []; var bool = true; for (var i = 0, p = 0, c = 0; i < userVar.length ; i++,p++) { switch(userVar[i]){ case "+": array.push("+"); bool = false; break; case "-": array.push("-"); bool = false; break; case "*": array.push("*"); bool = false; break; case "/": array.push("/"); bool = false; break; default: if(i != 0 && bool) { p--; c++; array[p] = array[p] + userVar[i]; bool = true; } else { array[p] = userVar[i] bool = true; } } } var result = 0; for (var i = 0; i < array.length; i++) { if(!(i % 2)) array[i] = +array[i]; } console.log(array); while(array.indexOf("*") > -1 || array.indexOf("/") > -1){ for (var i = 0; i < array.length; i++) { if(i % 2){ if(array[i] === "*"){ var res = array[i - 1] * array[i + 1]; array.splice(i - 1, 3, res); continue } if(array[i] === "/"){ var res = array[i - 1] / array[i + 1]; array.splice(i - 1, 3, res); continue } } } } console.log(array) if(array.length === 1) result = array[0] for (var i = 0; i < array.length; i++) { if(i % 2){ if(array[i] === "+"){ if(i === 1) result += array[i - 1] + array[i + 1]; else result += array[i + 1]; } if(array[i] === "-"){ if(i === 1) result = array[i - 1] - array[i + 1]; else result -= array[i + 1]; } } } console.log(array); return result; } console.log(result); ```