“Алгоритм фильтра JavaScript на месте” Ответ

Алгоритм фильтра JavaScript на месте

function filterInPlace(a, condition) {
  let i = 0, j = 0;

  while (i < a.length) {
    const val = a[i];
    if (condition(val, i, a)) a[j++] = val;
    i++;
  }

  a.length = j;
  return a;
}
Outrageous Opossum

Алгоритм фильтра JavaScript на месте

function filterInPlace(a, condition, thisArg) {
  let j = 0;

  a.forEach((e, i) => { 
    if (condition.call(thisArg, e, i, a)) {
      if (i!==j) a[j] = e; 
      j++;
    }
  });

  a.length = j;
  return a;
}

a = [ 1,, 3 ];
document.write('<br>[',a,']');

filterInPlace(a, x=>true);
document.write('<br>[',a,'] compaction when nothing changed');

b = [ 1,,3,,5 ];
document.write('<br>[',b,']');

filterInPlace(b, x=>x!==5);
document.write('<br>[',b,'] with 5 removed');
 Run code snippet
Outrageous Opossum

Ответы похожие на “Алгоритм фильтра JavaScript на месте”

Вопросы похожие на “Алгоритм фильтра JavaScript на месте”

Больше похожих ответов на “Алгоритм фильтра JavaScript на месте” по JavaScript

Смотреть популярные ответы по языку

Смотреть другие языки программирования