b1.addEventListener('click', () => {
const tasks = [
{text: "Заварить кофе", isDone: false},
{text: "Пожарить яичницу", isDone: false},
{text: "продрать глаза", isDone: true},
];
Сохранять в LS сериализованный в JSON этот массив:const itemKey = 'tasks';
localStorage.setItem(itemKey, JSON.stringify(tasks));
найти объект
найти самое большое значение
const obj = arr.flat().reduce((max, n) => max?.age > n.age ? max : n, null);
const val = Math.max(...arr.flat().map(n => n.age));
const objs = arr.reduce((acc, n) => (
n.forEach(m => (
m.age > acc[0] && (acc = [ m.age, [] ]),
m.age === acc[0] && acc[1].push(m)
)),
acc
), [ -Infinity, [] ])[1];
function Switch({ options, value, onChange }) {
const highlight = useRef();
useEffect(() => {
const activeButton = highlight.current.closest('.c-switch').querySelector('.is-active');
highlight.current.style.width = `${activeButton?.offsetWidth ?? 0}px`;
highlight.current.style.transform = `translateX(${activeButton?.offsetLeft ?? 0}px)`;
}, [ value ]);
return (
<div className="c-switch">
<div className="c-switch__highlight" ref={highlight}></div>
{options.map(n => (
<button
key={n.value}
className={n.value === value ? 'is-active' : ''}
onClick={() => onChange(n.value)}
>{n.text}</button>
))}
</div>
);
}
SELECT * FROM users WHERE username=:username
$user = [
'id' => 1,
'username' => 'vasya',
'password' => 'длинный хеш'
]
password_verify($old_password, $user['hash'])
$hash = password_hash($new_password, PASSWORD_DEFAULT);
UPDATE users SET password=:hash WHERE id=$user['id']
Object.create(null)
) вместо Map
- работа с ним на порядок быстрее.Map
соответствует порядку добавления и не может быть изменен постфактум. Вам следует для сортировки получить из Map
массив, отсортировать, и либо создать новый Map
из оного, либо заново добавить все значения в исходный, предварительно тот очистив. Map
заранее с пустыми значениями - перезапись не меняет порядок. save_note = document.createElement("div");
save_note.className = "note";
let save_note = document.createElement("div");
save_note.className = "note";
..................
function delete_note(note_node){
section.removeChild(note_node);
}
delete_icon.addEventListener('click', () => { delete_note(save_note); });
я сталкиваюсь с тем, что я не понимаю как его делать, хотя там есть все то, что я уже проходил.
Но, если я вижу решение того или иного задания, то я сразу же понимаю почему те или иные действия выполнены при решение.
но как разобраться со своей проблемой я не знаю.
[...num+''] = [...`${num}`] = [...num.toString()] = num.toString().split('')
[...`${num}`]
. Просто нагляднее и современнее.