let
— const
)6a - По поводу HTML сущностей. Хотя в приведённом примере нет ни одного символа, который бы требовал перекодирования в HTML-сущности, тем не менее, при выводе любого текста в HTML, эти сущности действительно должны быть перекодированы в обязательном порядке, всегда, в 100% случаев. Причем с помощью не какой-то левой addslashes, а функции, которая действительно это делает, htmlspecialchars($var_zametka)
echo json_encode($var_zametka)
function getDividers(num, divider) {
return num === 1
? []
: num % divider
? getDividers(num, divider + 1)
: [ divider, ...getDividers(num / divider, divider) ];
}
function showDividers(num) {
if (!Number.isInteger(num) || num < 2) {
throw 'fuck off';
}
console.log(`${num} = ${getDividers(num, 2).join(' * ')}`);
}
Array.from(
arr.reduce((acc, n) => acc.set(n, -~acc.get(n)), new Map),
n => [ n[0], (n[1] / arr.length * 100).toFixed(2) + '%' ]
)
.grid {
display: grid;
gap: 15px;
grid-template-columns: 475px 180px 475px;
justify-content: center;
}
.grid__item {
background-color: #000;
height: 320px;
}
.grid__item:nth-child(odd) {
grid-column-end: span 2;
}
.grid__item:nth-last-child(-n + 2) {
grid-column: 1 / span 1;
}
.grid__item:nth-last-child(-n + 1) {
grid-column: 2 / span 2;
}
elem
, изменится и его «оригинал» – элемент массива. Но нет. Число возвели в квадрат, но в массиве всё осталось по-прежнему.elem
не числом, а объектом, трюк сработал бы. let arr = [ {x: 1}, {x: 2}, {x: 3}, {x: 4}, {x: 5} ];
for (let elem of arr) {
elem.x = elem.x ** 2;
}
// [ {"x": 1}, {"x": 4}, {"x": 9}, {"x": 16}, {"x": 25} ]
users[0].friends[0].gender
friends
(массив). Был объект user
, стал только его массив friends
. Методом map()
friends
методом filter()
надо оставить только тех, где gender === 'female'
users
получится массив массивов – иногда пустых, иногда с девушками.flat()
map(fn).flat()
заменить на один, делающий то же самое, flatMap(fn)
users.flatMap(({ friends }) => friends.filter(({ gender }) => gender === 'female'));
// [ {"name":"Mira","gender":"female"}, {"name":"Aria","gender":"female"}, {"name":"Keit","gender":"female"} ]
const getNestedItems = (data, test) =>
data instanceof Object
? Object.values(data).flatMap(n => getNestedItems(n, test))
: test(data) ? [ data ] : [];
const result = getNestedItems(obj, x => /^[A-Z]+$/.test(x)).join('');
if (this.frame < 0) { this.frame = this.slides.lenght-1; this.setBackground(this.slides[this.frame]) }
frame
неотрицательный, то вызывать setBackground
уже не надо?undefined
. А после вычитания единицы - NaN
. Элемента с индексом NaN
в массиве нет, так что в setBackground
улетает undefined
- его вы и видите в стилях.if (this.frame > this.slides.length) {
buttonLeft.addEventListener('click', slider.left());
все с атрибутом required
const className = 'здесь ваш класс';
const inputs = document.querySelectorAll(`.${className}`);
// или
const inputs = document.getElementsByClassName(className);
const isFilled = [...inputs].every(n => n.value);
// или
const isFilled = !Array.prototype.some.call(inputs, n => !n.value);
// или
let isFilled = true;
for (const n of inputs) {
if (!n.value) {
isFilled = false;
break;
}
}
// или
let isFilled = true;
for (let i = -1; ++i < inputs.length && (isFilled = !!inputs[i].value);) ;
// или
const isFilled = !(function isEmpty(i) {
return i < inputs.length && (!inputs[i].value || isEmpty(-~i));
})(0);