根据给定的迭代器函数过滤掉指定值改变原始数组。
检查提供的最后一个参数是否是函数。
使用Array.prototype.map()将迭代器函数fn应用于所有数组元素。
使用Array.prototype.filter() 和 Array.prototype.includes()过滤出不需要的值。
设置Array.prototype.length,通过将数组的长度重置为 0 来改变传入的数组。
使用Array.prototype.push()拉取的值重新填充数组。
const pullBy = (arr, ...args) => {
const length = args.length;
let fn = length > 1 ? args[length - 1] : undefined;
fn = typeof fn == 'function' ? (args.pop(), fn) : undefined;
let argState = (Array.isArray(args[0]) ? args[0] : args).map(val => fn(val));
let pulled = arr.filter((v, i) => !argState.includes(fn(v)));
arr.length = 0;
pulled.forEach(v => arr.push(v));
};
更多内容请访问 https://www.icoderoad.com