//ES6
//ES6: Таблица умножения
let f;
let str = "
";
str += "0 | 1 | 2 | 3 | 4 | 5 | 6 | 7 | 8 | 9 |
";
for(let i = 1; i < 10; i++) {
str += `${i} | `; //Использование ${} внутри `` скобочек было добавлено в ES6
for(let j = 1; j < 10; j++) {
f = (i, j) => str += `${i*j} | `; //Использование ${} внутри `` скобочек было добавлено в ES6
f(i, j);
}
str += "
";
}
document.write(str);
//ES6: Подсветить ячейку
//ES6: Подсветить строку и столбец,
let table = document.querySelector(".table");
let tr = table.querySelectorAll("tr");
let fillTdBackground = function(evt ,backgroundColor = null) { //Использование параметров по умолчанию
let evtTargetCellIndex = evt.target.cellIndex;
let evtTargetRowIndex = evt.target.parentElement.rowIndex;
if(evt.target.tagName == "TD" && evtTargetRowIndex != 0 && evtTargetCellIndex != 0) {
evt.target.style = `background-color: ${backgroundColor}`; // Использование ${} внутри `` скобочек
tr[0].children[evtTargetCellIndex].style = `background-color: ${backgroundColor}`; // Использование ${} внутри `` скобочек
tr[evtTargetRowIndex].children[0].style = `background-color: ${backgroundColor}`; // Использование ${} внутри `` скобочек
}
};
table.addEventListener("mouseover", function(evt) {
fillTdBackground(evt, "#ff5151")
});
table.addEventListener("mouseout", function(evt) {
fillTdBackground(evt)
});
//ES6: Calc
//ES6: Calc Live
let arrElements = [
document.querySelector(".first-input"),
document.querySelector(".second-input"),
document.querySelector(".select"),
document.querySelector(".result")
]
let [firstInput, secondInput, select, result] = arrElements; // Диструктуризация
let caltResult = function() {
if(select.value == "+") {
result.value = +firstInput.value + +secondInput.value;
} else if(select.value == "-") {
result.value = +firstInput.value - +secondInput.value
} else if(select.value == "/") {
result.value = +firstInput.value / +secondInput.value;
} else {
result.value = +firstInput.value * +secondInput.value;
}
}
for(let element of arrElements) { // Использование for of
element.addEventListener("input", function(){
caltResult();
});
};
//sort
var persons = [
{name: "Иван", age: 17},
{name: "Мария", age: 35},
{name: "Алексей", age: 73},
{name: "Яков", age: 12},
]
let mySort = function(arr, key, ascending = true) {
arr.sort(function(a, b) {
if(typeof(a[key]) == "string") {
return ascending ? a[key].length - b[key].length : b[key].length - a[key].length;
} else {
return ascending ? a[key] - b[key] : b[key] - a[key];
}
});
};
//array map
let arr1 = ["1", {}, null, undefined, "500", 700].map(function(item){
if(typeof(item) == "string") {
item = +item;
}
return item
});
//array reduce
let arrayReduce = ["0", 5, 3, "string", null].reduce(function(previousItem, currentItem){
if(typeof(currentItem) == "number") {
previousItem = previousItem * currentItem;
}
return previousItem;
}, 1);
console.log(arrayReduce);
//object filter
var phone = {
brand: "meizu",
model: "m2",
ram: 2,
color: "black",
};
let filter = function(obj, f) {
for(let key in obj) {
if(!f(key, obj[key])) {
delete obj[key];
}
}
};
filter(phone,(key,value) => key == "color" || value == 2);
//object map
let map = function(obj, f) {
let newObj = {};
for(let key in obj) {
Object.assign(newObj, f(key, obj[key]))
}
return newObj;
};
console.log(
map({name: "Иван", age: 17},function(key,value){
var result = {};
result[key+"_"] = value + "$";
return result;
})
)
//Рекурсия
//Sum
let sum = function(x) {
return x == 1 ? 1 : x + sum(x - 1);
}
console.log(sum(10));
//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,
},
}
let str = "";
let drawTreeHTML = function(obj) {
str += `<${obj.tagName}>`;
if("text" in obj) {
str += `${obj.text}`;
}
if("children" in obj) {
for(let child of obj.children) {
drawTreeHTML(child);
}
}
str += `${obj.tagName}>`;
}
drawTreeHTML(someTree);
document.write(str);
}