特别声明:如果您喜欢小站的内容,可以点击申请会员进行全站阅读。如果您对付费阅读有任何建议或想法,欢迎发送邮件至: airenliao@gmail.com!或添加QQ:874472854(^_^)
今天的任务中创建一个destroyer()
函数,其功能是对所给的数组根据参数删除这些元素。也就是说给destroyer()
传入一个参数arr
,而且这个参数是类似这样的[1,2,3,4,5,2,3,1,3],1,3
,要做的事情就是从数组[1,2,3,4,5,2,3,1,3]
删除所有的1
和3
元素。
实现思路
知道要完成的任务之后,要有一个实现思路,其简单的可以概括为:
- 通过
arguments
对象将所有参数包装成一个数组args
- 通过JavaScript的一些方法将
arr
参数移除,也就是需要删除的参数 - 通过
Array.indexOf()
将arr
除外的args
数组做为过滤的条件 - 通过
filter()
方法创建过滤条件,将arr
中符合filter()
条件的元素删除,当然除了通过filter()
之外,还可以使用JavaScript中的for
循环 - 返回最后的
arr
将涉及到的JavaScript方法
有思路了,就好办了,这里简单罗列一些将要用到的JavaScript方法:
上面的知识点是后面所有解决方案都将会涉及到的。为了更好的理解后面的解决方案,简单的回忆一下这几个知识点。
arguments
是一个类数组对象。代表传给一个function
的参数列表。它是函数内部的本地变量,已不再是函数的属必了。可以在函数内部通过使用arguments
对象来获取函数的所有参数。
特别强调了,arguments
对象仅在函数内部有效,在函数外部调用arguments
对象会出现一个错误。来看一个简单的示列:
function destroyer (arr) {
// 将所传的参数转换成数组args
var args = arguments;
console.log(args); //[[1,2,1,3,2,1,3,4,2,6],1,2]
for (var i = 0, len = arguments.length; i < len; i++) {
console.log(arguments[i]);
/*
* i = 0 => arguments[0] = [1,2,1,3,2,1,3,4,2,6]
* i = 1 => arguments[1] = 1
* i = 2 => arguments[2] = 2
*/
}
}
destroyer([1,2,1,3,2,1,3,4,2,6],1,2);
从上面的示例,可以知道,通过arguments[0]
可以获取到的数组arr
,也就是目标数组。同时通过JavaScript的push()
、splice()
或者shift()
之类的方法来删除args
数组中的第一个元素,从而得到需要从arr
中移除的参数,其也是一个数组,比如说将其称为removeArgs
。
如需转载,烦请注明出处:https://www.w3cplus.com/javascript/seek-and-destroy-in-javascript.html
如果文章中有不对之处,烦请各位大神拍正。如果你觉得这篇文章对你有所帮助,打个赏,让我有更大的动力去创作。(^_^)。看完了?还不过瘾?点击向作者提问!