// имена свойств можно передавать в виде массива
const pick = (obj, keys) => Object.fromEntries(keys.map(n => [ n, obj[n] ]));
const newObj = pick(obj, [ 'b', 'c' ]);
// или как отдельные значения
const pick = (obj, ...keys) => keys.reduce((acc, n) => (acc[n] = obj[n], acc), {});
const newObj = pick(obj, 'b', 'c');
const pickExisting = (obj, keys) =>
Object.fromEntries(keys.filter(n => n in obj).map(n => [ n, obj[n] ]));
const pickOwn = (obj, keys) =>
keys.reduce((acc, n) => (Object.hasOwn(obj, n) && (acc[n] = obj[n]), acc), {});
const pick = (obj, filterFn) => Object.fromEntries(Object.entries(obj).filter(filterFn));
const obj1 = pick(obj, ([ k, v ]) => 'abc'.includes(k) && v % 2); // {a: 1, c: 3}
const obj2 = pick(obj, n => n[1] > 2); // {c: 3, d: 5}
let statuses = document.querySelectorAll('.M')
statuses.forEach((item) => {
if (item.innerText === 'Активен') {
item.classList.add('Free')
}
if (item.innerText === 'Заблокирован') {
item.classList.add('Blocked')
}
}
)
<MyStatus
class="M"
:class="{'Free': item.Status==='Активен', 'Blocked': item.Status==='Заблокирован'}"
style="width: 75%; padding: 0.25em 0.75em"
>
{{ player.Status }}
</MyStatus>
const slider = $(".slider").slick({
centerMode: true,
slidesToShow: 4
});
const breakpoint = window.matchMedia("(max-width: 992px)");
const breakpointChecker = () => {
if (breakpoint.matches) {
slider.slick('init');
} else {
slider.slick('destroy');
}
};
breakpoint.addEventListener("change", breakpointChecker);
breakpointChecker();
computed: {
deadlineText() {
const today = new Date().setHours(0, 0, 0, 0);
const deadline = new Date(this.task.deadline).setHours(0, 0, 0, 0);
return [ 'Уже было', 'Сегодня', 'Жди' ][1 + Math.sign(deadline - today)];
},
},
document.querySelector('input').addEventListener('input', e => {
const { value } = e.target;
const num = Number(value);
const isValid = !isNaN(num) &&
num <= 60 &&
num >= -60;
// что-то делаем с валидным / невалидным
if (isValid) {
// мы молодцы, сирену можно выключить
} else {
// включаем мигалку и сирены, подсвечиваем красным
}
});
Есть ли возможность понять, какой конечный вариант в модели должен быть и какая таблица получится с нуля, после применения всех миграций?Ну, собственно, применить все миграции и посмотреть в таблицу, в чём тут сложность-то?
Я пробовал request()->fullUrlWithQuery(), но тогда получается, что в методе я должен указать параметр и значение, но если у меня, например, 10 параметров, получается, что мне каждый надо указывать.
If you would like to append query string data to the current URL, you may call the fullUrlWithQuery method. This method merges the given array of query string variables with the current query string:
<a href="{{ request()->fullUrlWithQuery(['status' => 1]) }}">Status</a>
<a href="{{ request()->fullUrlWithQuery(['color' => 1]) }}">Color</a>
что делаю не так?
active
на кнопке? Его у элемента с классом d-n
переключать надо - вместо той ерунды с изменением стилей напрямую. Кстати, а кому вы пытаетесь назначить style.display = 'table-cell'
? Если идти от кнопки parent-parent-next (вместо того, чтобы несколько раз дёргать parentNode, следует использовать метод closest) - это будет (не будет, погуглите, в чём разница между nextSibling
и nextElementSibling
) строка, а не ячейка - так что перенесите-ка класс d-n
на один уровень выше. Зачем создавать каждой кнопке индивидуальный обработчик? Достаточно одного на всех, создавайте его вне цикла. Наконец, у classList.toggle
есть второй параметр, не надо им пренебрегать.document.querySelectorAll('.panel').forEach(n => n.addEventListener('click', onClick));
function onClick() {
const panel = this.closest('tr').nextElementSibling;
const isActive = !panel.classList.contains('active');
panel.classList.toggle('active', isActive);
this.classList.toggle('changing-icon', isActive);
}
$token = bin2hex(random_bytes(24));