关于javascript中arguments的一个很好的例子
金克斯的迫击炮!
实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值
函数中的有隐式的不确定个数的参数,而我们在函数中将会用到它,很显然,这需要我们在 arguments
上做文章了。我们来看看MDN是怎么解释 arguments
的:
arguments 是一个类数组对象。代表传给一个function的参数列表。
很显然,既然是类数组对象,说明它不是真正的数组,没有数组所具有的属性和方法(除了 length
属性)。为了便于我们接下来的运算,我们需要把arr后面的待摧毁的所有参数放进一个数组:
var args = [];
for(var i = 1; i < arguments.length; i++){
args.push(arguments[i]);
}
拿到了待摧毁的项构成的数组,接下来就是用 filter()
方法实现的简单的去重操作了。
arr.filter(function(item,index,array){
return args.indexOf(item) < 0;
});
因为 filter()
不会改变原始数组,所以声明一个变量接收上一步的返回结果,最后整个函数返回这个变量,问题解决啦!
解法
function destroyer(arr) {
// Remove all the values
var args = [];
for(var i = 1; i < arguments.length; i++){
args.push(arguments[i]);
}
var temp = arr.filter(function(item,index,array){
return args.indexOf(item) < 0;
});
return temp;
}
测试
destroyer([1, 2, 3, 1, 2, 3], 2, 3)
应该返回 [1, 1]
.
destroyer([1, 2, 3, 5, 1, 2, 3], 2, 3)
应该返回 [1, 5, 1]
.
destroyer([3, 5, 1, 2, 2], 2, 3, 5)
应该返回 [1]
.
destroyer([2, 3, 2, 3], 2, 3)
应该返回 []
.
destroyer(["tree", "hamburger", 53], "tree", 53)
应该返回 ["hamburger"]
.
关于javascript中arguments的一个很好的例子的更多相关文章
- javascript 中 arguments.callee属性
javascript 中 arguments.callee属性 可以在函数内部,指向的是这个函数(或者叫做“类”)本身. 相当于PHP 中的 self 关键字. The arguments.calle ...
- JavaScript中随机打乱一个数组
JavaScript中随机打乱一个数组 function shuffle(arr) { let i = arr.length; while (i) { let j = Math.floor(Math. ...
- javascript中怎么让一个页面执行多个window.onload?
我们都知道在javascript中window.onload 只能有一个如果有多个的话后面的会覆盖前面的,今天我们来看看怎么让一个页面执行多个window.onload <script type ...
- javascript 中arguments.callee 调用自身
一.Arguments该对象代表正在执行的函数和调用他的函数的参数.[function.]arguments[n]参数function :选项.当前正在执行的 Function 对象的名字.n :选项 ...
- 【JavaScript】浅析JavaScript中arguments对象的使用
arguments对象不能显式创建,arguments对象只有函数开始时才可用.函数的 arguments 对象并不是一个数组,访问单个参数的方式与访问数组元素的方式相同.索引 n 实际上是 argu ...
- JavaScript中的this -- 好像很有道理版
函数调用 首先需要从函数的调用开始讲起. JS(ES5)里面有三种函数调用形式: func(p1, p2) obj.child.method(p1, p2) func.call(context, p1 ...
- javascript中arguments的应用——不定项传参求和
<script type="text/javascript"> window.onload=function(){ function sum(){ var result ...
- JavaScript 中 如何判断一个元素是否在一个数组中
<script type="text/javascript"> var arrList=['12','qw','q','v','d','t']; console.log ...
- JavaScript中,返回上一个页面时,如何保证上一个页面的不刷新?
history.back()和history.go(-1)都可以实现返回上一页并不刷新.History 对象包含用户(在浏览器窗口中)访问过的 URL. history.back() 等同于在浏览器点 ...
随机推荐
- iis相关概念和操作
iis相关 iis是什么? 它是互联网信息服务的缩写,是网页服务组件(即多种服务器集成) iis为什么存在,作用是什么? 方便于网络上发布信息. 如何使用等等? 1)打开win7的 ...
- sqflite插件简单使用 key======================
https://blog.csdn.net/weixin_34183910/article/details/86029912 https://blog.csdn.net/u013255127/arti ...
- 提升node.js中使用redis的性能
问题初现 某基于node.js开发的业务系统向外提供了一个dubbo服务,提供向第三方缓存查询.设置多项业务数据并聚合操作结果.在QPS达到800时(两台虚拟机,每台机器4Core8G4node进程) ...
- JAVA随笔----浅谈lombok注解
在Java开发中,注解可谓是帮了大忙.注解的使用帮助我们简化了代码,让代码更加简洁.今天就来谈谈常用的Lombok注解. lombok注解文档 lombok官方下载地址 先看一下lombok支持的一些 ...
- IDEA汉化教程
https://blog.csdn.net/weixin_38500325/article/details/81393251
- EFI系统引导的一些零碎知识点
EFI目录 下图只有Boot和Microsoft,如果你还装其他系统可能还会有其他的文件夹,比如你还装了Ubuntu(或者manjaro),那么会有个叫Ubuntu(manjaro)的文件夹与Boot ...
- (转)Illustrated: Efficient Neural Architecture Search ---Guide on macro and micro search strategies in ENAS
Illustrated: Efficient Neural Architecture Search --- Guide on macro and micro search strategies in ...
- 注入(injector)
在java开发中有时候我们的一个类需要依赖另外一个类,这种就是依赖关系,创建对象的工作一般由spring容器来完成然后注入给调用者,这种就是依赖注入. Java依赖注入设计原则允许我们移除硬编码依赖和 ...
- 关于spark写入文件至文件系统并制定文件名之自定义outputFormat
引言: spark项目中通常我们需要将我们处理之后数据保存到文件中,比如将处理之后的RDD保存到hdfs上指定的目录中,亦或是保存在本地 spark保存文件: 1.rdd.saveAsTextFile ...
- Envoy 源码分析--event
目录 Envoy 源码分析--event libevent Timer SignalEvent FileEvent RealTimeSystem 任务队列 延迟析构 dispacth_thread E ...