.container {
display: grid;
grid-template-columns: repeat(5, 1fr);
}
function App() {
const [ count, setCount ] = useState(0);
const onChange = e => setCount(Math.max(0, e.target.value | 0));
return (
<div>
<input type="number" value={count} onChange={onChange} />
<div className="container">
{Array.from(Array(count).keys(), n => <div className="item">{n}</div>)}
</div>
</div>
);
}
callbacks: {
open() {
$(window).trigger('resize');
},
},
Удаление перехватывающего обработчика никак не затрагивает не-перехватывающюю версию этого же обработчика, и наоборот.
const mod = (a, b) => ((a % b) + b) % b;
// или
const mod = (a, b) => a - (b * Math.floor(a / b));
console.log([ 12, 367, -54, 789, -567 ].map(n => mod(n, 360)));
arr.reduce((max, n) => +n < +max ? max : n, -Infinity)
data.flatMap(item => item.events.flatMap(event => event.params.map(param => ({
name: item.name,
event_key: event.event_key,
...param,
}))))
const className = 'heading';
const wrapperTag = 'span';
const wrapCount = 3;
document.querySelectorAll(`.${className}`).forEach(n => {
const words = n.innerText.split(' ');
const iMin = Math.max(0, Math.floor((words.length - wrapCount) / 2));
const iMax = Math.min(words.length - 1, iMin + wrapCount - 1);
words[iMin] = `<${wrapperTag}>${words[iMin]}`;
words[iMax] = `${words[iMax]}</${wrapperTag}>`;
n.innerHTML = words.join(' ');
});
for (const n of document.getElementsByClassName(className)) {
const words = n.textContent.split(/(?= )/);
const wrapper = document.createElement(wrapperTag);
wrapper.textContent = words
.splice(Math.max(0, (words.length - wrapCount) >> 1), wrapCount, wrapper)
.join('');
n.replaceChildren(...words);
}
$grouped = [];
foreach ($arr as $key => $val) {
$grouped[explode('_', $key)[0]][$key] = $val;
}
function fadeToggle(selector, delay) {
let index = -1;
return setInterval($items => {
$items.eq(index).fadeOut('slow');
index = (index + 1) % $items.length;
$items.eq(index).fadeIn('slow');
}, delay, $(selector));
}
const intervalId = fadeToggle('.sloi', 1000);
for (let i = begin; i <= end; i++) {
let str = '';
if (!(i % 3)) {
str += 'Fizz';
}
if (!(i % 5)) {
str += 'Buzz';
}
console.log(str || i);
}
console.log(Array.from({ length: end - begin + 1 }, (_, i) => {
i += begin;
return (i % 3 ? '' : 'Fizz') + (i % 5 ? '' : 'Buzz') || i;
}).join('\n'));
// или
for (let i = begin; i <= end; console.log('FizzBuzz'.slice(i % 3 && 4, 4 << !(i % 5)) || i), i++) ;
const rootEl = useRef(null);
useEffect(() => {
const onClick = e => rootEl.current.contains(e.target) || console.log('клик вне компонента');
document.addEventListener('click', onClick);
return () => document.removeEventListener('click', onClick);
}, []);
return (
<div ref={rootEl}>
...
</div>
);
const roots = arr.filter((n, i, a) => !a.some(m => m.id === n.root_id));
const roots = arr.filter(function(n) {
return !this.has(n.root_id);
}, new Set(arr.map(n => n.id)));
Нужно взять число
\w+
\w+
- это не число. Число - это минус (возможно отсутствует), затем целая часть (цифры), затем дробная часть (точка и цифры, возможно отсутствует).между парой @@
[@@]
@{2}
. Или можно просто два раза нужный символ указать.re.findall(r'(?<=@@)-?\d+(?:\.\d+)?(?=@@)', text)
if(sortedArr[i + 1] == sortedArr[i]) { results.push(sortedArr[i]); }
const getDuplicates = arr => arr
.slice()
.sort()
.reduce((acc, n, i, a) => (n === a[i + 1] && n !== a[i - 1] && acc.push(n), acc), []);
const getDuplicates = arr => Array
.from(arr.reduce((acc, n) => acc.set(n, (acc.get(n) ?? 0) + 1), new Map))
.reduce((acc, n) => (n[1] > 1 && acc.push(n[0]), acc), []);
const getDuplicates = arr => Object
.entries(arr.reduce((acc, n) => (acc[n] = acc.hasOwnProperty(n), acc), {}))
.filter(n => n[1])
.map(n => +n[0]);
const getDuplicates = arr =>
[...arr.reduce((acc, n) => (acc[+acc[0].has(n)].add(n), acc), [ new Set, new Set ])[1]];
const getDuplicates = arr =>
[...new Set(arr.filter((n, i, a) => a.includes(n, i + 1)))];
const getDuplicates = arr => arr
.filter((n, i, a) => i !== a.indexOf(n))
.filter((n, i, a) => i === a.indexOf(n));