function getGridSize() {
const w = window.innerWidth;
return [ 500, 700, 1225, Infinity ].findIndex(n => n > w) + 1;
}
function getGridSize() {
const w = window.innerWidth;
return [
{ size: 1, maxWidth: 500 },
{ size: 2, maxWidth: 700 },
{ size: 3, maxWidth: 1225 },
{ size: 4, maxWidth: Infinity },
].find(n => n.maxWidth > w).size;
}
const isEqual = (a, b) =>
a.length === b.length && a.every((n, i) => Object.is(n, b[i]));
const includes = (arrs, search) =>
arrs.some(n => isEqual(n, search));
console.log(includes(array, [ 21, 81 ]));
. const newArr2 = arr2.filter(n => arr1.includes(n.name));
// или
const newArr2 = arr2.filter(function(n) {
return this.has(n.name);
}, new Set(arr1));
// или
const obj2 = Object.fromEntries(arr2.map(n => [ n.name, n ]));
const newArr2 = arr1.reduce((acc, n) => ((n = obj2[n]) && acc.push(n), acc), []);
let numDeleted = 0;
for (let i = 0; i < arr2.length; i++) {
arr2[i - numDeleted] = arr2[i];
numDeleted += !arr1.includes(arr2[i].name);
}
arr2.length -= numDeleted;
// или
for (let i = arr2.length; i--;) {
if (!arr1.includes(arr2[i].name)) {
arr2.splice(i, 1);
}
}
// или
arr2.reduceRight((_, n, i, a) => arr1.includes(n.name) || a.splice(i, 1), null);
// или
arr2.splice(0, arr2.length, ...arr2.filter(n => arr1.includes(n.name)));
const result = graphData.map((n, i) => ({ ...n, color: palette[i % palette.length] }));
const combine = (arr, keys, values) =>
arr.map(({ ...n }, i) => (
values.forEach((m, j) => n[keys[j]] = m[i % m.length]),
n
));
const result = combine(graphData, [ 'color' ], [ palette ]);
const className = 'класс, который не надо удалять';
// Если известно, что класс присутствует или должен быть добавлен в случае отсутствия:
element.className = className;
// Если известно, что класс отсутствует и не должен быть добавлен:
element.className = '';
// Если неизвестно, присутствует ли класс и в случае отсутствия он не должен быть добавлен:
element.className = element.classList.contains(className) ? className : '';
// или
element.classList.remove(...[...element.classList].filter(n => n !== className));
function createTree(arr, structure) {
const tree = Object.fromEntries(arr.map(n => [ n.id, { ...n } ]));
const nonRootIds = structure.flatMap(n => n.children);
structure.forEach(n => tree[n.id].elements = n.children.map(m => tree[m]));
return Object.values(tree).filter(n => !nonRootIds.includes(n.id));
}