JavaScript算法练习:从数组中寻找元素并删除元素

特别声明:为感谢社区广大朋友对小站的支持,自2019年10月1日至2019年11月11日开通年费VIP通道,年费价格为 ¥299.00元。如果您喜欢小站的内容,可以点击开通会员进行全站阅读。如果您对付费阅读有任何建议或想法,欢迎发送邮件至: airenliao@gmail.com!(^_^)

今天的任务中创建一个destroyer()函数,其功能是对所给的数组根据参数删除这些元素。也就是说给destroyer()传入一个参数arr,而且这个参数是类似这样的[1,2,3,4,5,2,3,1,3],1,3,要做的事情就是从数组[1,2,3,4,5,2,3,1,3]删除所有的13元素。

实现思路

知道要完成的任务之后,要有一个实现思路,其简单的可以概括为:

  • 通过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

剩余80%内容付费后可查看

如需转载,烦请注明出处:https://www.w3cplus.com/javascript/seek-and-destroy-in-javascript.html

如果文章中有不对之处,烦请各位大神拍正。如果你觉得这篇文章对你有所帮助,打个赏,让我有更大的动力去创作。(^_^)。看完了?还不过瘾?点击向作者提问!

赏杯咖啡,鼓励他创作更多优质内容!
返回顶部