key = lambda item: (item[0], item[3])
keys = set(map(key, list_in))
list_out = [ [ k[0], sum(int(n[2]) for n in list_in if k == key(n)), k[1] ] for k in keys ]
name="delivery", data-post - пусть оба будут или delivery, или post). Сделайте пустыми строками значения option'ов, которые соответствуют всем вариантам.$('.result-btn').on('click', function() {
const values = $('select')
.get()
.filter(n => n.value)
.map(n => [ n.name, n.value.toLowerCase() ]);
$('.delivery-table-item')
.show()
.filter((i, { dataset: d }) => values.some(([ k, v ]) => d[k].toLowerCase() !== v))
.hide();
});
создаёт новый массив со всеми значениями, для которых функцияcallbackвернула значение, которое может быть приведено кtrue
true, если элемент массива является числом, то есть, в результирующий массив попадают только числа, и неважно, каковы их значения. Во втором случае вы возвращаете сам элемент, если он является числом, а нули, они да - имеют своим булевым эквивалентом false, поэтому и отбрасываются.
data: () => ({
links: [
{ to: '...', title: '...' },
{ to: '...', title: '...' },
...
],
}),<ul>
<router-link v-for="n in links" :to="n.to" v-slot="s">
<li :class="{ active: s.isExactActive }">
<a :href="s.href" @click="s.navigate">{{ n.title }}</a>
</li>
</router-link>
</ul>
.map(n => ({ ...n, actv: false })).map(n => (n.actv = false, n))или после монтирования компонента?
mounted() {
this.postsData.forEach(n => this.$set(n, 'actv', false));
},mounted() {
this.postsData = this.postsData.map(n => ({ ...n, actv: false }));
},
const icons = {
one: [ 'url иконки раскрытия одного элемента', 'и закрытия' ],
all: [ 'url иконки раскрытия всех', 'что здесь должно быть, думаю догадаетесь' ],
};
const getState = el => $(el)
.closest('.team__info-worklog')
.find('.worklog-table')
.get()
.map(n => $(n).is(':visible'));
const setState = (el, state) => $(el)
.closest('.team__info-worklog')
.find('.worklog-table').each((i, n) => $(n)[state[i] ? 'slideDown' : 'slideUp']()).end()
.find('.worklog-expend-all img').attr('src', icons.all[+state.some(Boolean)]).end()
.find('.worklog-list__expend img').attr('src', i => icons.one[+state[i]]);
const createUpdater = f => e => setState(e.target, f(getState(e.target), e));
$('.worklog-expend-all').on('click', createUpdater(state => {
return Array(state.length).fill(!state.some(Boolean));
}));
$('.team__info-worklog').on('click', '.worklog-list__expend', createUpdater((state, e) => {
const index = $(e.target).closest('.worklog-list__row').index();
return state.map((n, i) => i === index ? !n : n);
}));
const blockSelector = '.block';
const buttonSelector = `${blockSelector} button`;
const el = document.querySelector(`${blockSelector} span`);document.querySelectorAll(buttonSelector).forEach(function(n) {
n.addEventListener('click', this);
}, ({ currentTarget: t }) => {
while (!(t = t.parentNode).matches(blockSelector)) ;
t.appendChild(el); // или t.insertBefore(el, null)
});document.addEventListener('click', e => e
.target
.closest(buttonSelector)
?.closest(blockSelector)
.append(el) // или .insertAdjacentElement('beforeend', el)
);
$keys = array_keys($arr);
$newArr = array_combine($keys, array_map(null, $arr, array_slice($keys, 1)));
const initialValues = [ 100, 100000 ];
const setValues = values => $inputs.val(i => values[i]);
const $slider = $('#slider-range').slider({
range: true,
min: initialValues[0],
max: initialValues[1],
step: 20,
values: initialValues,
slide: (e, ui) => setValues(ui.values),
});
const $inputs = $('#amount_before, #amount_after')
.on('input', () => $slider.slider('values', $inputs.get().map(n => n.value)));
setValues(initialValues);
строка.replace(регулярка, '')
// или
строка.split(регулярка).join('')вот так я ищу часть текста /ПКБ №\d+/ <...> Нужно найти например слова "новое имя" тут "ПКБ №33 Новое имя"str.replace(/ПКБ №\d+/, '').trim()
// или
''.concat(...str.split(/ПКБ №\d+\s*/))
// или
str.match(/(?<=ПКБ №\d+ ).+/)[0]
// или
/(\S+\s+){2}(.+)/.exec(str).pop()
// или
str.split(' ').slice(2).join(' ')
onChange={this.props.filterItems}filterItems = ({ target: { name, checked } }) => {
this.setState({
[name]: checked,
});
}
const select = document.querySelector('[name="id_car_mark"]');blackList:const options = Object.fromEntries(Array.from(select, n => [ n.innerText, n ]));
select.prepend(...blackList.reduce((acc, n) => ((n = options[n]) && acc.push(n), acc), []));select.append(...Array.prototype.filter.call(select, function(n) {
return !this.has(n.textContent);
}, new Set(blackList)));