<p data-letter="2">П</p>
<p data-letter="0">Ж</p>
<p data-letter="3">А</p>
<p data-letter="1">О</p>const word = $('[data-letter]')
.sort((a, b) => $(a).data('letter') - $(b).data('letter'))
.text();
// или
const word = Array
.from(document.querySelectorAll('[data-letter]'))
.reduce((acc, n) => (acc[n.dataset.letter] = n.innerText, acc), [])
.join('');
onChange([ date ]) {
endDate.set('minDate', +date + 1000 * 60 * 60 * 24 * 14);
},
click: evt => { evt.stopPropagation() // https://github.com/bootstrap-vue/bootstrap-vue/issues/1528 this.$root.$emit('bv::dropdown::shown') }
orderlist проверяйте orderlist[0][0]. Если заранее не знаете - сделайте метод, который проверит всё:const inArray = (arr, val) =>
arr.flat(Infinity).includes(val);
// или
const inArray = (arr, val) =>
arr.some(n => Object.is(n, val) || (Array.isArray(n) && inArray(n, val)));
// или
function inArray(arr, val) {
const stack = [];
for (let i = 0; i < arr.length || stack.length; i++) {
if (i === arr.length) {
[ i, arr ] = stack.pop();
} else if (arr[i] === val) {
return true;
} else if (arr[i] instanceof Array) {
stack.push([ i, arr ]);
[ i, arr ] = [ -1, arr[i] ];
}
}
return false;
}
строка = floor(индекс / количество столбцов)
столбец = индекс % количество столбцов
const routes = new ymaps.GeoObjectCollection();
map.geoObjects.add(routes);
routesData.forEach(n => ymaps.route(n).then(route => {
route.events.add('mouseenter', onMouseEnter.bind(route));
route.events.add('mouseleave', onMouseLeave);
routes.add(route);
}));
function onMouseEnter() {
routes.each(n => n.options.set('visible', n === this));
}
function onMouseLeave() {
routes.each(n => n.options.set('visible', true));
}
const result = Object.values(arr.reduce((acc, n) => {
const group = acc[n.id] = acc[n.id] || { id: n.id, offers: [] };
group.offers.push(n);
return acc;
}, {}));