需求

给出一个类数组,删除要求的重复数据,返回新数组

destroyer([1, 2, 3, 1, 2, 3], 2, 3) should return [1, 1]
destroyer([2, 3, 2, 3], 2, 3) should return []
destroyer(["tree", "hamburger", 53], "tree", 53) should return ["hamburger"]

思路1

1.类数组转化成数组
2.双重循环比较两个数组的元素
3.删除重复数据
4.剔除非Boolean数据

function destroyer(arr) {var args = Array.from(arguments).slice(1);for(var i=0; i<arr.length; i++) {for(var j=0; j<args.length; j++) {if(arr[i] === args[j]) {delete arr[i];}}}return arr.filter(Boolean);
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);

思路2

1.类数组转化成数组
2.fiter()方法返回不重复数组

function destroyer(arr) {var args = Array.from(arguments).slice(1);return arr.filter((val) => !args.includes(val));
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);

相关

arguments(类数组转换成数组),以下方法都可以
let args = Array.prototype.slice.call(arguments);
let args = [].slice.call(arguments);
let args = Array.from(arguments);
let args = [...arguments];
arr.filter(callback[, thisArg]) 
  • filter() 方法创建一个新数组, 其包含通过所提供函数实现的测试的所有元素。

参数:

  • callback
    用来测试数组的每个元素的函数。调用时使用参数 (element, index, array)。返回true表示保留该元素(通过测试),false则不保留。
  • thisArg
    可选。执行 callback 时的用于 this 的值。
  • 返回值
    一个新的通过测试的元素的集合的数组

描述:

  • filter 为数组中的每个元素调用一次 callback 函数,并利用所有使得 callback 返回 true 或 等价于 true 的值 的元素创建一个新数组。callback 只会在已经赋值的索引上被调用,对于那些已经被删除或者从未被赋值的索引不会被调用。那些没有通过 callback 测试的元素会被跳过,不会被包含在新数组中。

有其他好的方法或思路的道友,不妨在沙发区神交一番。

【译】JS基础算法脚本:类数组(arguments)去重相关推荐

  1. 【译】JS基础算法脚本:字符串重复

    需求 给出字符串和重复次数,返回重复多次的字符串 repeatStringNumTimes("abc", 3) repeatStringNumTimes("abc&quo ...

  2. JS基础-Java Class类以及获取Class实例的三种方式

    JS基础-Java Class类以及获取Class实例的三种方式 由于JVM为每个加载的class创建了对应的Class实例,并在实例中保存了该class的所有信息,包括类名.包名.父类.实现的接口. ...

  3. js 类数组arguments详解

    arguments并不是一个真正的数组,而是一个"类似数组(array-like)"的对象: 就像下面的这段输出,就是典型的类数组对象: [12, 23, callee: ƒ, S ...

  4. JS小技巧 ----- 将类数组 / 字符串转为数组的几种方式

    使用ES6的数组解构和 - 运算符 // 假设 m 是一个类数组对象 或者 字符串 let [...arr1] = m; // 将 m 转换为了 arr1 数组 let arr2 = [...m] / ...

  5. html 中二维数组创建,【百度】js基础任务2-二维数组,dom操作

    最近在学百度前端学院斌斌的课程 查漏补缺,收获不少,做个总结 题目: 将提供的空气质量数据数组,按照某种逻辑(比如空气质量大于60)进行过滤筛选,最后将符合条件的数据按照一定的格式要求显示在网页上 我 ...

  6. js基础语法知识(数组/对象/日期)

    对象 删除属性: 1 delete obj.name; 对象作为参数传递给函数: 1 function box(obj){ 2 if(obj.name!=undefined) alert(obj.na ...

  7. 类数组arguments

    var isArray = function(){ return arguments; } isArray(1,2,3); // 返回[1,2,3] isArray.call(null,1,2,3); ...

  8. java 笛卡尔积 数组_在JS中笛卡尔积算法与多重数组笛卡尔积(详细教程)

    这篇文章主要介绍了JS笛卡尔积算法与多重数组笛卡尔积实现方法,结合实例形式分析了javascript根据对象或数组生成笛卡尔积的相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS笛卡尔积算法与多重 ...

  9. java 80_【JavaWeb】80:js基础详解

    今天是刘小爱自学Java的第80天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: JavaScript是一门编程语言,但凡是编程语言,其在基本语法上都是大同小异的. 我们学了Java,那么再学 ...

最新文章

  1. float属性html,详解CSS样式中的float属性
  2. Python之Fabric
  3. 数据绑定控件之ListView
  4. java getSource()和 getActionCommand()
  5. 北京工商大学计算机学院研究生院,北京工商大学计算机学院
  6. sybase 事务插入时不可查询_InnoDB事务与锁
  7. mysql查询结果插入另外一张表
  8. 阿里云存储:安防行业背后的赋能者 | 凌云时刻
  9. php3.2项目怎么创建,php网站后台源码(thinkphp3.2.3开发微信编辑器创建后台)
  10. android timepicker分割线颜色,Android TimePicker 的使用
  11. html文档放到phpstudy,phpstudy使用详解
  12. workerman gatawayworker 定时器
  13. 计算机教室 设备负荷,设备建设标准和规范教室线缆布线.ppt
  14. JDK的下载、安装和环境配置教程(2021年,win10)
  15. PDF如何编辑?教你几个常用的PDF编辑方法
  16. bedtools 批量提取snp前后1000bp片段
  17. 漂亮的蓝色风格网页设计作品欣赏(系列二)
  18. 汇编中的串操作指令(MOVS,CMPS,SCAS,LODS,STOS)
  19. 一个普通码农的Linux之路
  20. 344. 反转字符串

热门文章

  1. Hibernate关联查询
  2. stl_vector.h
  3. HDU-2094 产生冠军
  4. 带你一起撸一遍 nodejs 常用核心模块(二)
  5. 无线AP如何区分来宾(流动)用户和正常用户?
  6. 丢掉DDoS的八个幻想
  7. Swift 3 新特性
  8. 回调函数和闭包的理解
  9. 针对淡入淡出的定时轮播效果js
  10. jsp上传文件名乱码