// вызовет initialize только когда догрузятся все скрипты defer:
document.addEventListener('DOMContentLoaded', initialize);
chance
– новое придуманное свойство объекта request
, назначаемое ему обработчиком. chance
, записав в него случайное число от 0 до 1.toster
. Тогда код выглядел бы так (замена в двух местах), но функционировал точно так же; возвращал тот же самый формат ответа:const express = require('express')
const app = express()
app.use((request, response, next) => { //Промежуточный обработчик
console.log(request.headers)
next()
})
app.use((request, response, next) => {
request.toster = Math.random()
next()
})
app.get('/', (request, response) => {
response.json({
chance: request.toster
})
})
app.listen(3000)
.headers
— свойство объекта запроса, наследованное от нативного Node'овского объекта запроса, см. http.IncomingMessage.headers. Содержит все HTTP-заголовки принятого HTTP запроса. четыре 6-битовых дают три 8-битных:
00000011 11112222 22333333
(()=>{
// из четырёх чисел 0..63 получить строку цвета типа "#abcdef"
const makeColor = (n1, n2, n3, n4) => {
const r = (n1 & 63) << 2 | (n2 & 48) >> 4;
const g = (n2 & 15) << 4 | (n3 & 60) >> 2;
const b = (n3 & 3) << 6 | n4 & 63;
return '#' + [r,g,b].map(n => n.toString(16).padStart(2,'0')).join('');
}
// из массива чисел от 0 до 63, длиной кратной 4, получить массив цветов
const arrToColor = arr => {
const len = arr.length;
if (len % 4) throw "Длина массива не кратна 4";
const result = [];
for (let i=0; i<len; i+=4)
result.push(makeColor(...arr.slice(i, i+4)));
return result;
}
// тест
const test = () => arrToColor(
[...new Array(64)].map(()=>Math.floor(64 * Math.random()))
);
return test();
})()
/*
#941510,#4b31ca,#eec8c9,#4c9202,
#336a01,#95b7ec,#e73d44,#4069e6,
#4d1700,#8efa27,#8e0333,#f089af,
#67b561,#fc8fc8,#48503c,#f308a9
*/
<section>
<article>
<a href="#">1 ссылка</a>
</article>
</section>
const el = document.querySelector('a'); // находит первый подходящий элемент
const text = el.innerText;
const digitText = text.substring(0,1); // тут будет текст единичка
const digitNumber = +digitText; // тут уже число 1
span
так же:const el = document.querySelector('span'); // найдет самый первый элемент span в документе
<span>не нужный</span>
<div id="theone">
<span>300 спартанцев</span>
</div>
const span = div.querySelector('#theone span');
function insertFirst(id) {
const li = document.createElement('li'); // создали новый листайтем
li.innerText = "меня тут не стояло";
const parent = document.getElementById(id); // это ul
const first = parent.firstChild; // это первый li до вставки
parent.insertBefore(li, first); // впихнули новый li перед бывшим первым
}
function camelize(str) { // на вход приходит строка
return str // вот тут пока ещё строка
.split('-') // здесь из этой строки сделали массив, разбив её по символу дефиса
// ниже пошёл массив ["lol", "kek", "cheburek"]
.map((word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1)) // что-то сделали с каждым элементом массива
.join(''); // соединяет ['my', 'Long', 'Word'] в 'myLongWord'
}
map()
– он просто применит функцию в нём к каждому элементу массива. На выходе получится новый массив..map((word, index) => index == 0 ? word : word[0].toUpperCase() + word.slice(1)) //**
// то же самое, что:
.map(
function(word, index) {
return index == 0 ? word : word[0].toUpperCase() + word.slice(1);
}
)
// то же самое, что:
.map(
function(word, index) {
if (index == 0) {
return word;
} else {
return word[0].toUpperCase() + word.slice(1);
}
}
)
.map()
вызывает функцию, которая в нём аргументом, для каждого элемента массива и передёт в неё следующие три параметра:mass[i][0]
Другим способом (введённым в ECMAScript 5) является рассмотрение строки как массивоподобного объекта, в котором символы имеют соответствующие числовые индексы:return 'кот'[1]; // вернёт "о"
При доступе к символам посредством нотации с квадратными скобками, попытка удалить символ, или присвоить значение числовому свойству закончится неудачей, поскольку эти свойства являются незаписываемыми и ненастраиваемыми. Смотрите документацию по методу Object.defineProperty() для дополнительной информации.
const titleCase = str => str
.toLowerCase()
.split(' ')
.map(word => {
const chararr = word.split('');
chararr[0] = chararr[0].toUpperCase();
return chararr.join('');
})
.join(' ');
titleCase("I'm a little pea"); // I'm A Little Pea
titleCase("I love the sky and the trees"); // I Love The Sky And The Trees
({email} = body)
{
const body = {
email: 'myEmail'
};
console.log(
({email} = body) // Object { email: "myEmail" }
);
}
function Check() {
var price = 0;
var PriceBoxes = $('[name=Price][type=checkbox]:checked');
if (PriceBoxes.length) price = $.makeArray(PriceBoxes)
.map(el => +el.value)
.reduce((p,c) => p+c);
$('.message').val(price);
}
removedNodes
— это NodeList
удалённых элементов.(1) […]
0: MutationRecord
addedNodes: NodeList []
attributeName: null
attributeNamespace: null
nextSibling: #text "
"
oldValue: null
previousSibling: #text "
"
removedNodes: NodeList(1)
0: <li id="to-delete">
length: 1
<prototype>: NodeListPrototype { item: item(), keys: keys(), values: values(), … }
target: <ul id="someElement">
type: "childList"
<prototype>: MutationRecordPrototype { type: Getter, target: Getter, addedNodes: Getter, … }
length: 1
<prototype>: Array []