• Seek and Destroy


    这两天在别人推荐发现一个学习前端的好地方。在群里面有人问了这个题说卡了一天,我就来分享一下我的思路。

    题目

    金克斯的迫击炮!

    实现一个摧毁(destroyer)函数,第一个参数是待摧毁的数组,其余的参数是待摧毁的值。

    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"] .


    提示

    Arguments object


    思路

    函数中包括了不确定数量的参数,所以就需要用到arguments。

    在MDN上的描述:

    arguments 是一个类数组对象。代表传给一个function的参数列表。你可以在函数内部通过使用 arguments 对象来获取函数的所有参数。这个对象为传递给函数的每个参数建立一个条目,条目的索引号从 0 开始。

    可见,arguments可以看作传入参数的一个列表。arguments是一个类数组意味着不是真正的数组。

    为了便于参数的使用,将所有应该待摧毁的值全部存入一个数组。在循环中添加条件arguments[i]为空的时候跳出循环。

       var arrDel=[];
       for(var i=1;arguments[i];i++){
    arrDel.push(arguments[i]); }

    拿到了存有所有代摧毁的值的数组,接下来使用filter执行一点微小的去重操作

       return arr.filter(function(val){
         return arrDel.indexOf(val)<0;
       });

    组合

    function destroyer(arr) {
      var arrDel=[];
      for(var i=1;arguments[i];i++){
          arrDel.push(arguments[i]);
      }
      return arr.filter(function(val){
        return arrDel.indexOf(val)<0;
      });
    }

    总结:没有总结~~欢迎大家来FCC找我玩 : )

    对技术保持热情与虔诚,生活将会无比伟大
  • 相关阅读:
    sqlalchemy
    nginx配置文件,做多个项目代理
    pyspider
    Mysql原理+ 多实例 +表损坏
    Spring 学习-AOP
    java 基础 --- 动态代理和静态代理
    Spring 学习-IoC
    [转]字符编码笔记:ASCII,Unicode 和 UTF-8
    JVM(五) class类文件的结构
    数据结构(四)--- 红黑树(RedBlock-Tree)
  • 原文地址:https://www.cnblogs.com/XhhDream/p/5836117.html
Copyright © 2020-2023  润新知