const getNum = () => new Promise(r => setTimeout(r, 1000, Math.random() * 100 | 0));
(async () => {
console.time('xxx');
const [ result1, result2 ] = [ await getNum(), await getNum() ];
console.log(result1, result2);
console.timeEnd('xxx');
})();
(async () => {
console.time('yyy');
const [ result1, result2 ] = await Promise.all([ getNum(), getNum() ]);
console.log(result1, result2);
console.timeEnd('yyy');
})();
$('table').on('change', 'select', ({ target: t }) => {
const isNone = t.value === 'none';
$(t)
.closest('td')
[isNone ? 'nextAll' : 'next']()
.find('select')
.prop('disabled', isNone)
.val((i, val) => isNone ? 'none' : val);
});
document.querySelector('table').addEventListener('change', ({ target: t }) => {
if (t.tagName === 'SELECT') {
const isNone = t.value === 'none';
const { cellIndex: i, parentNode: { children } } = t.closest('td');
[...children].slice(i + 1, isNone ? undefined : i + 2).forEach(n => {
const select = n.querySelector('select');
select.disabled = isNone;
select.value = isNone ? 'none' : select.value;
});
}
});
this.onWheel.bind(this) !== this.onWheel.bind(this) // true
<button id="button-1"
$('#botton-1').on('dblclick',
$('#example thead tr:eq(1) th').slice(2).each(... дальше всё как было
не проканало, то есть визуально все как надо но по факту поиск из фильтра стал работать не в той колонке
table.column(i)
, а table.column(i + 2)
. Или не полагаться на передаваемый индекс, а вычислять его самостоятельно, что-то вроде const index = $(this).closest('th').index()
. const count = arr.reduce((acc, n) => (acc[n.revitid] = (acc[n.revitid] || 0) + 1, acc), {});
const unique = Object.entries(count).filter(n => n[1] === 1).map(n => n[0]);
const newArr = arr.filter(n => unique.includes(n.revitid));
const duplicate = arr.reduce((acc, n) => (acc[n.revitid] = acc.hasOwnProperty(n.revitid), acc), {});
const newArr = arr.filter(n => !duplicate[n.revitid]);
const newArr = arr.filter(function(n) {
return !this.get(n.revitid);
}, arr.reduce((acc, { revitid: n }) => acc.set(n, acc.has(n)), new Map));
const newArr = arr.filter((n, i, a) => a.filter(m => m.revitid === n.revitid).length === 1);
const newArr = Object
.values(arr.reduce((acc, n) => (acc[n.revitid] = acc[n.revitid] ? 1 : n, acc), {}))
.filter(n => n !== 1);
const newArr = Object
.values(arr.reduce((acc, n) => ((acc[n.revitid] = acc[n.revitid] || []).push(n), acc), {}))
.flatMap(n => n.length === 1 ? n : []);
const getImageSizes = src => new Promise((resolve, reject) => {
const img = new Image();
img.onload = () => resolve({ width: img.width, height: img.height });
img.onerror = reject;
img.src = src;
});
getImageSizes(здесь путь к вашей картинке).then(sizes => {
...
});
const chunks = (arr, chunkSize) =>
arr.reduce((acc, n, i) => (
(i % chunkSize) || acc.push([]),
acc[acc.length - 1].push(n),
acc
), []);
const data = [...Array(12).keys()];
const chunkSize = 2;
const html = chunks(data, chunkSize)
.map(n => `<div>${n.map(m => `<div>${m}</div>`).join('')}</div>`)
.join('');
let index = -1;
setInterval(radios => {
radios.item(index = (index + 1) % radios.length).click();
}, 1000, document.querySelectorAll('.gallery-colors input'));
(function click(radios) {
const radio = radios[-~radios.findIndex(n => n.checked)] || radios[0];
radio.checked = true;
radio.dispatchEvent(new Event('change', { bubbles: true }));
setTimeout(click, 1000, radios);
})([...document.getElementsByName('bmw')]);
<div class="modal-content">
, например.const valueToDel = 'value1';
for (const n of Object.entries(obj)) {
if (n[1] === valueToDel) {
delete obj[n[0]];
}
}
const newObj = Object
.entries(obj)
.reduce((acc, [ k, v ]) => (v !== valueToDel && (acc[k] = v), acc), {});
// или
const newObj = Object.fromEntries(Object
.entries(obj)
.filter(n => n[1] !== valueToDel)
);
let workingLine = function() {
firstLetter = workingLine[0]
firstLetter.match( /[a-z]|[а-я]/g )
0
, которого нет, т.е., получаете undefined
, и у этого undefined
пытаетесь вызвать строковый метод..b-popup
появляется, он закрывает собой .b-block
, возникает событие mouseleave, и его надо скрывать. А как он скрылся - его надо снова показывать, потому что на .b-block
возникает событие mouseenter. Ну вот так оно по кругу и происходит.pointer-events: none
для .b-popup
. Или поместите .b-popup
внутрь .b-block
. Внутри цикла не работает setTimeout
(async () => {
const data = [ 1, 2, 3, 4, 5 ];
for (const n of data) {
console.log(n);
await new Promise(r => setTimeout(r, 1000));
}
})();
в Storage сохраняются введенные значения, а в инпут - нет
$('#text')
.val(localStorage.getItem('key') || '')
.on('input', e => localStorage.setItem('key', e.target.value));