$grouped = [];
foreach ($date as $d) {
$parts = explode('-', $d);
$grouped[$parts[0]][intval($parts[1])][] = intval($parts[2]);
}
data: () => ({
checked: null,
items: [ 'hello, world!!', 'fuck the world', 'fuck everything' ],
}),<label v-for="(n, i) in items">
<input
type="checkbox"
:checked="checked === i"
@change="checked = $event.target.checked ? i : null"
>
{{ n }}
</label>
*ngIf="year === activeYear". Типа так:activeYear = null;
log(year) {
this.activeYear = this.activeYear === year ? null : year;
}<div class="middle-content" *ngFor="let year of years">
<a class="middle-content_top-indent" (click)="log(year)">{{ year }}</a>
<ul class="list-of-month" *ngIf="year === activeYear">
<li *ngFor="let month of months">
<span class="list-of-month__marker"></span>
<a href="#">{{ month }}</a>
</li>
</ul>
</div>
const itemSelector = '.menu-catalog__item';
const buttonSelector = '.menu-catalog__link';
const className = 'menu-catalog__open';const $items = $(itemSelector).on('click', buttonSelector, e => {
$items.not(e.delegateTarget).removeClass(className);
$(e.delegateTarget).toggleClass(className);
});
// или
const items = document.querySelectorAll(itemSelector);
const onClick = ({ target: t }) =>
t.closest(buttonSelector) && items.forEach(n => {
n.classList[n.contains(t) ? 'toggle' : 'remove'](className);
});
items.forEach(n => n.addEventListener('click', onClick));
function shortNumber(val) {
const numSymbol = [ '', 'K', 'M', 'B', 'T' ];
let symbolIndex = 0;
while (val >= 1000) {
val = Math.round(val / 1000);
symbolIndex++;
}
return val + numSymbol[symbolIndex];
}
shortNumber(96); // 96
shortNumber(22222); // 22K
shortNumber(4951476); // 5M
можно статью засовывать в разные категории <...> один ко многим
как проделать тоже самое со списком $this->getProxyList('socks4') и $this->getProxyList('socks5')
$proxy_types = [ $proxy_type, 'socks4', 'socks5' ];
foreach ($proxy_types as $type) {
$proxy_list = $this->getProxyList($type);
// а здесь ваш исходный foreach
}
$('.tabs').on('click', '.tab', function() {
setActiveTab($(this).index());
});
$('.nav').magnificPopup({
type: 'inline',
delegate: 'a',
callbacks: {
open() {
setActiveTab(this.currItem.index);
},
},
});
function setActiveTab(index) {
$('.tab').removeClass('active').eq(index).addClass('active');
$('.tab_item').hide().eq(index).fadeIn();
}
const reverse = str =>
str.length < 2 ? str : reverse(str.slice(1)) + str[0];const reverse = ([ c, ...str ]) =>
c ? reverse(str) + c : '';
isBlockNavButtons отвечает за логику disable для тех кнопок. То есть если у нас элемент последний или первый, то мы блочим нужную нам кнопку.dispatch({
type: `${CREATE_QUESTION}_BLOCK_BUTTON`,
payload: {
blockPreviousButton: elementIndex === 0,
blockNextButton: elementIndex === data.length - 1,
},
});
$.easing.bullshit = function(x, t, b, c, d) {
return (t == d) ? b + c : c * (-Math.pow(2, -10 * t / d) + 1) + b;
};
$('.ach-number span').each(function() {
$(this).prop('counter', 0).animate({
counter: $(this).text(),
}, {
duration: 10000,
easing: 'bullshit',
step(val) {
$(this).text(Math.ceil(val));
},
});
});
$router.push, сама текущая страница из свойства компонента станет его параметром и будет браться из параметров маршрута. Примерно так. Не знаю, похоже ли это на то, что вам надо, если нет - кидайте свой код в песочницу, тогда возможно, смогу подсказать точнее.