 
  
  function max(data, key = n => n) {
  const getVal = key instanceof Function ? key : n => n[key];
  let result = null;
  for (const n of data) {
    const val = getVal(n);
    result = result?.[1] >= val ? result : [ n, val ];
  }
  return result?.[0];
}const { text } = max(arr, n => n.text.length);
const oldest = max(arr, 'age'); 
  
  const tableSelector = 'здесь селектор вашей таблицы';
const columnIndices = [ 8, 9, 10 ];
const $rows = $(`${tableSelector} tr`);
// или
const { rows } = document.querySelector(tableSelector);$rows.each((_, n) =>
  $('> *', n)
    .filter(i => ~columnIndices.indexOf(i))
    .remove()
);$rows
  .children(`${columnIndices.map(n => `:nth-child(${-~n})`)}`)
  .detach();Array.prototype.forEach.call(rows, function(n) {
  for (let i = n.cells.length; i--; this.has(i) && n.deleteCell(i)) ;
}, new Set(columnIndices));for (const { cells } of rows) {
  columnIndices.map(n => cells[n]).forEach(n => n?.remove());
}for (const n of rows) {
  n.replaceChildren(...Array.prototype.filter.call(
    n.cells,
    (_, i) => !columnIndices.includes(i)
  ));
} 
  
  function getWeekdaysOfMonth(year, month) {
  const date = new Date(year, --month, 1);
  const result = [];
  while (date.getMonth() === month) {
    result.push(date.toLocaleString('ru-RU', {
      month: 'long',
      day: 'numeric',
      weekday: 'long',
    }));
    date.setDate(date.getDate() + 1);
  }
  return result;
}
const weekdaysOfDecember2020 = getWeekdaysOfMonth(2020, 12);но как поступить если я не хочу забирать дни недели из стандартного объекта. а взять из их своего массива?
const weekdays = [
  'воскресенье',
  'это понедельник',
  'а это вторник',
  'конечно же среда',
  'четверг',
  'пятница - прямо после четверга',
  'суббота, рабочая неделя окончена',
];
const getWeekdaysOfMonth = (year, month) => Array.from(
  { length: new Date(year, month--, 0).getDate() },
  (n, i) => {
    const d = new Date(year, month, i + 1);
    return d.toLocaleString('ru-RU', {
      month: 'long',
      day: 'numeric',
    }) + ', ' + weekdays[d.getDay()];
  });
const weekdaysOfFebruary2021 = getWeekdaysOfMonth(2021, 2); 
  
  document.querySelector('.products__body').addEventListener('click', e => {
  const item = e.target.closest('.card-preview__item');
  if (item) {
    e.preventDefault();
    const { srcset } = item.querySelector('source');
    item.closest('.card').querySelector('.card-head__image source').srcset = srcset;
  }
}); 
  
  For DOM trees which represent HTML documents, the returned tag name is always in the canonical upper-case form.
if(str.tagName == 'ul') {} else if (str.tagName == 'li') {str, что за странный выбор имени? Там же элемент, а не строка.elem.append('li');for (let el of strLi) { el.addEventListener('click',func); };
func вынесено за пределы текущей функции, иначе бы при каждом клике всем существующим li добавлялся новый обработчик.li, на свежесозданных li клик обрабатываться не будет (касается и тех, что изначально существуют).li - так зачем назначать отдельный обработчик клика? То, что делаете в func, вполне можно делать прямо тут.document.querySelector('ul').addEventListener('click', e => {
  const t = e.target;
  const ct = e.currentTarget;
  t.insertAdjacentHTML('beforeend', ct === t ? '<li>text</li>' : '!');
}); 
  
  const parent = document.querySelector('ul');.parent.querySelectorAll(':scope > *').forEach(n => parent.prepend(n));
// или
Element.prototype.append.apply(parent, [...parent.children].reverse());
// или
const [ first, ...rest ] = parent.children;
first?.before(...rest.reverse());
// или
for (const n of parent.children) {
  parent.insertBefore(n, parent.firstElementChild);
}
// или
for (let i = parent.children.length; i--;) {
  parent.insertAdjacentElement('beforeend', parent.children[i]);
}
// или
const elems = Array.from(parent.children);
while (elems.length) {
  parent.appendChild(elems.pop());
} 
  
  let first = вам следовало разместить внутри цикла, а не перед ним; во-вторых, проще всего получить цифру старшего разряда можно превратив число в строку и взяв нулевой символ. Т.е., вы пытались изобразить нечто подобное:for (const n of arr) {
  const [ first ] = String(n);
  if (first == 1 || first == 2 || first == 5) {
    console.log(n);
  }
}// ...строкой
const first = '125';
const startsWithFirst = n => !!~first.indexOf(`${n}`[0]);
// ...массивом чисел
const first = [ 1, 2, 5 ];
const startsWithFirst = n => first.includes(n / (10 ** (Math.log10(n) | 0)) | 0);
// ...числом
const first = 0b100110;
const startsWithFirst = n => ((first >> ('' + n).charAt()) & 1) === 1;
// ...регулярным выражением
const first = /^[125]/;
const startsWithFirst = n => first.test(n);// все сразу
console.log(arr.filter(startsWithFirst));
// или по одному
arr.forEach(n => startsWithFirst(n) && console.log(n)); 
  
  новая_координата = Math.max(
  минимальное_допустимое_значение,
  Math.min(
    максимальное_допустимое_значение,
    текущая_координата + изменение_координаты
  )
); 
  
  const getSrc = img => img.getAttribute('src');
// или
const getSrc = img => img.attributes.src.value;const relativeOnly = f => img => {
  const src = getSrc(img);
  if (!/^https?:\/\//.test(src)) {
    f(img, src);
  }
};document.querySelectorAll('img').forEach(relativeOnly((img, src) =>
  img.outerHTML = `
    <picture>
      <source srcset="${src}" type="image/svg+xml">
      ${img.outerHTML}
    </picture>`
));const wrapImages = relativeOnly((img, src) => {
  const picture = document.createElement('picture');
  const source = document.createElement('source');
  source.srcset = src;
  source.type = 'image/svg+xml';
  img.replaceWith(picture);
  picture.append(source, img);
});for (const n of document.getElementsByTagName('img')) {
  wrapImages(n);
}
// или
Array.prototype.forEach.call(document.images, wrapImages); 
  
  const count = 10;.const result = Array
  .from({ length: count }, (n, i) => `"${-~i}"`)
  .join(', ');
// или
const result = [...Array(count).keys()].reduce((acc, n) => {
  return acc.concat(acc && ', ', '"', ++n, '"');
}, '');
// или
const result = (function xxx(n) {
  return n > 0 ? xxx(n - 1) + (n === 1 ? '' : ', ') + '"' + n + '"' : '';
})(count);
// или
const result = Array(count)
  .fill()
  .map((n, i) => JSON.stringify((i + 1).toString()))
  .toString()
  .replace(/,/g, '$& '); 
  
  const buttonSelector = '.class2';
const classesToToggle = [ 'class3', 'class4' ];$(buttonSelector).click(e => {
  $(e.currentTarget).next().toggleClass(classesToToggle.join(' '));
});document.querySelectorAll(buttonSelector).forEach(n => {
  n.addEventListener('click', onClick);
});
function onClick() {
  classesToToggle.forEach(n => this.nextElementSibling.classList.toggle(n));
}document.addEventListener('click', e => {
  const button = e.target.closest(buttonSelector);
  if (button) {
    for (const n of classesToToggle) {
      button.parentNode.lastElementChild.classList.toggle(n);
    }
  }
}); 
  
  const el = document.querySelector('#box');
const colors = [ 'red', 'green', 'blue' ];
let index = -1;
el.addEventListener('mouseenter', function() {
  index = (index + 1) % colors.length;
  this.style.backgroundColor = colors[index];
});
el.addEventListener('mouseleave', function() {
  this.style.backgroundColor = '';
}); 
  
  подскажите, что мне нужно подправить
function makeRequests(urls, max) {
  return new Promise(resolve => {
    const results = Array(urls.length).fill(null);
    const groupedUrls = urls.reduce((acc, n, i) => ((acc[n] ??= []).push(i), acc), {});
    const uniqueUrls = Object.keys(groupedUrls);
    let countRequests = 0;
    let countResponses = 0;
    for (let i = 0; i < Math.max(1, Math.min(max, uniqueUrls.length)); i++) {
      request();
    }
    function request() {
      if (countResponses === uniqueUrls.length) {
        resolve(results);
      } else if (countRequests < uniqueUrls.length) {
        const url = uniqueUrls[countRequests++];
        fetch(url)
          .then(result => result.json())
          .catch(error => error)
          .then(result => {
            groupedUrls[url].forEach(n => results[n] = result);
            countResponses++;
            request();
          });
      }
    }
  });
} 
  
  $('form').on('input', function() {
  $('.button').prop('disabled', $('input', this).get().some(n => !n.value));
}).trigger('input');
// или
const form = document.querySelector('form');
const button = document.querySelector('.button');
const inputs = [...form.querySelectorAll('input')];
form.addEventListener('input', () => button.disabled = !inputs.every(n => n.value));
form.dispatchEvent(new Event('input')); 
  
  function makeRandomizer([ min, max ]) {
  const numbers = [...Array(max - min + 1).keys()];
  return () => numbers.length
    ? min + numbers.splice(Math.random() * numbers.length | 0, 1)[0]
    : null;
}function makeRandomizer([ min, max ]) {
  const numbers = Array.from(
    { length: max - min + 1 },
    (_, i) => min + i
  );
  for (let i = numbers.length; --i > 0;) {
    const j = Math.floor(Math.random() * (i + 1));
    [ numbers[i], numbers[j] ] = [ numbers[j], numbers[i] ];
  }
  return () => numbers.pop() ?? null;
}