从数组中移除匹配的元素

通过移除给定函数返回false的元素来改变数组。

  • 使用Array.prototype.filter()找到返回真值的数组元素。
  • 使用Array.prototype.reduce()Array.prototype.splice()来移除元素。
  • 回调函数接受三个参数(值,索引,数组)。
const remove = (arr, func) =>
  Array.isArray(arr)
    ? arr.filter(func).reduce((acc, val) => {
      arr.splice(arr.indexOf(val), 1);
      return acc.concat(val);
    }, [])
    : [];

remove([1, 2, 3, 4], n => n % 2 === 0); // [2, 4]