str.match(/\w+$/)[0]str.split(/\W/).pop()str.replace(/.*\W/, '')-1, с единицей это 0, т.е., начало строки) и до конца:str.slice(1 + Math.max(...[...'@/'].map(n => str.lastIndexOf(n))))[...str].reduce((acc, n) => '@/'.includes(n) ? '' : acc + n, '')
const closeInfoWindows = (...windows) => windows.forEach(w => w && w.close());
[object Object].$('<table class="table fixedheader footable">').html(clone)
<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);
},
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 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;
}, {}));
document.querySelectorAll('.num').forEach(n => n.innerText *= 2);[ -(2 ** 30), 2 ** 30 )), то можно и без оператора умножения обойтись:for (const n of document.getElementsByClassName('num')) {
n.textContent <<= 1;
}
function createTree(data) {
const tree = { null: { cat: {} } };
data.forEach(n => tree[n.id] = { cat: {}, ...n });
data.forEach(n => tree[n.parent].cat[n.name] = tree[n.id]);
return tree.null.cat;
}