碎片时间学编程「32]:根据函数从数组中提取值

根据给定的迭代器函数过滤掉指定值改变原始数组。

检查提供的最后一个参数是否是函数。

使用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

©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容