【译】JS基础算法脚本:类数组(arguments)去重
需求
给出一个类数组,删除要求的重复数据,返回新数组
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)去重相关推荐
- 【译】JS基础算法脚本:字符串重复
需求 给出字符串和重复次数,返回重复多次的字符串 repeatStringNumTimes("abc", 3) repeatStringNumTimes("abc&quo ...
- JS基础-Java Class类以及获取Class实例的三种方式
JS基础-Java Class类以及获取Class实例的三种方式 由于JVM为每个加载的class创建了对应的Class实例,并在实例中保存了该class的所有信息,包括类名.包名.父类.实现的接口. ...
- js 类数组arguments详解
arguments并不是一个真正的数组,而是一个"类似数组(array-like)"的对象: 就像下面的这段输出,就是典型的类数组对象: [12, 23, callee: ƒ, S ...
- JS小技巧 ----- 将类数组 / 字符串转为数组的几种方式
使用ES6的数组解构和 - 运算符 // 假设 m 是一个类数组对象 或者 字符串 let [...arr1] = m; // 将 m 转换为了 arr1 数组 let arr2 = [...m] / ...
- html 中二维数组创建,【百度】js基础任务2-二维数组,dom操作
最近在学百度前端学院斌斌的课程 查漏补缺,收获不少,做个总结 题目: 将提供的空气质量数据数组,按照某种逻辑(比如空气质量大于60)进行过滤筛选,最后将符合条件的数据按照一定的格式要求显示在网页上 我 ...
- js基础语法知识(数组/对象/日期)
对象 删除属性: 1 delete obj.name; 对象作为参数传递给函数: 1 function box(obj){ 2 if(obj.name!=undefined) alert(obj.na ...
- 类数组arguments
var isArray = function(){ return arguments; } isArray(1,2,3); // 返回[1,2,3] isArray.call(null,1,2,3); ...
- java 笛卡尔积 数组_在JS中笛卡尔积算法与多重数组笛卡尔积(详细教程)
这篇文章主要介绍了JS笛卡尔积算法与多重数组笛卡尔积实现方法,结合实例形式分析了javascript根据对象或数组生成笛卡尔积的相关操作技巧,需要的朋友可以参考下 本文实例讲述了JS笛卡尔积算法与多重 ...
- java 80_【JavaWeb】80:js基础详解
今天是刘小爱自学Java的第80天. 感谢你的观看,谢谢你. 话不多说,开始今天的学习: JavaScript是一门编程语言,但凡是编程语言,其在基本语法上都是大同小异的. 我们学了Java,那么再学 ...
最新文章
- float属性html,详解CSS样式中的float属性
- Python之Fabric
- 数据绑定控件之ListView
- java getSource()和 getActionCommand()
- 北京工商大学计算机学院研究生院,北京工商大学计算机学院
- sybase 事务插入时不可查询_InnoDB事务与锁
- mysql查询结果插入另外一张表
- 阿里云存储:安防行业背后的赋能者 | 凌云时刻
- php3.2项目怎么创建,php网站后台源码(thinkphp3.2.3开发微信编辑器创建后台)
- android timepicker分割线颜色,Android TimePicker 的使用
- html文档放到phpstudy,phpstudy使用详解
- workerman gatawayworker 定时器
- 计算机教室 设备负荷,设备建设标准和规范教室线缆布线.ppt
- JDK的下载、安装和环境配置教程(2021年,win10)
- PDF如何编辑?教你几个常用的PDF编辑方法
- bedtools 批量提取snp前后1000bp片段
- 漂亮的蓝色风格网页设计作品欣赏(系列二)
- 汇编中的串操作指令(MOVS,CMPS,SCAS,LODS,STOS)
- 一个普通码农的Linux之路
- 344. 反转字符串