30秒学会 JavaScript 片段 · 2019年3月7日

30秒学会 JavaScript 片段 – remove

Mutates an array by removing elements for which the given function returns false.

Use Array.prototype.filter() to find array elements that return truthy values and Array.prototype.reduce() to remove elements using Array.prototype.splice().
The func is invoked with three arguments (value, index, array).

代码片段


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]