Удалить элементы списка с конца, пока выполняется условие

const take = (arr, n = 1) => arr.slice(0, n);
JavaScript
const takeRight = (arr, n = 1) => arr.slice(arr.length - n, arr.length);
JavaScript
const takeRightWhile = (arr, fn) => {
  for (const [i, val] of […arr].reverse().entries())
    if (!fn(val)) return i === 0 ? [] : arr.slice(-i);
  return arr;
};
JavaScript
take([1, 2, 3], 5); // [1, 2, 3]
take([1, 2, 3], 0); // []
JavaScript
takeRight([1, 2, 3], 2); // [ 2, 3 ]
takeRight([1, 2, 3]); // [3]
JavaScript
takeRightWhile([1, 2, 3, 4], n => n >= 3); // [3, 4]
JavaScript
Браузер JavaScript