FCC263: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没有length属性,所以在循环中添加条件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找我玩 : )

时间: 2024-12-24 10:47:28

FCC263:Seek and Destroy的相关文章

POJ 2752:Seek the Name, Seek the Fame

Seek the Name, Seek the Fame Time Limit: 2000MS Memory Limit: 65536K Total Submissions: 13619 Accepted: 6755 Description The little cat is so famous, that many couples tramp over hill and dale to Byteland, and asked the little cat to give names to th

HDU 4679:Terrorist’s destroy 树形DP

Terrorist’s destroy 题目链接: http://acm.hdu.edu.cn/showproblem.php?pid=4679 题意: 给出一棵树,删除该树的某一条边会得到一个值a(该边的energy值)和一个值b(删除该边得到的两棵子树上的最大路径),求删除哪条边可以使得a*b最小,若存在多个最小值,则选择边号较小的那条. 树上所有相邻节点间的距离都为1. 题解: 可以知道删除某边后两棵子树的最长路径都是由原树直径的两个端点出发的,以任意一个节点为起点跑一边BFS(或者DFS

Servlet学习笔记(一):生命周期

一.Servlet 生命周期: Servlet 生命周期可被定义为从创建直到毁灭的整个过程.以下是 Servlet 遵循的过程:初始化--响应请求--终止--回收 Servlet 通过调用 init () 方法进行初始化. Servlet 调用 service() 方法来处理客户端的请求. Servlet 通过调用 destroy() 方法终止(结束). 最后,Servlet 是由 JVM 的垃圾回收器进行垃圾回收的. 现在让我们详细讨论生命周期的方法. 1.init() 方法: init 方法

Laravel 5系列教程四:数据库和Eloquent

免费视频教程地址https://laravist.com/series/laravel-5-basic 上一篇写了一些Laravel Blade的基本用法和给视图传递变量的几种方式, 这一节我们来说说跟数据库打交道的数据库配置和Laravel强大的Eloquent. Laravel的数据库配置 本部分内容为下节做准备 Laravel的配置文件都是在项目目录的config/文件夹之下,这里也就是在blog/config文件夹之下,你可以打开这个文件夹看看,你面有很多配置文件:如mail.php(配

poj_2752 Seek the Name, Seek the Fame

http://poj.org/problem?id=2752 分析: 题目要求一个既是S的前缀又是S的后缀的子串(S本身是自己的前缀又是自己的后缀).主要利用next数组求解.       e.g. no 0 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 S a b a b c a b a b a b a b c a b a b /0 next -1 0 0 1 2 0 1 2 3 4 3 4 3 4 5 6 7 8 9 Out: 2  4  9  1

Java Web学习(29): Servlet学习(二)

Servlet生命周期 先来看看一个Servlet执行的流程图: 再来看看我们所说的HttpServlet的上下文: 一个Servlet的执行过程: Servlet的生命周期 Servlet生命周期可被定义为从创建直到销毁的整个过程.servlet生命周期阶段包括初始化.加载.实例化.服务 和销毁. 以下是Servlet遵循的过程: 1)初始化阶段:Servlet通过调用init()方法进行初始化. 2)响应客户端请求阶段:Servlet调用service()方法来处理客户端的请求:由servi

python 文件操作seek() 和 telll() 自我解释

python 文件操作seek() 和 telll()  自我解释 file.seek()方法格式: seek(offset,whence=0)   移动文件读取指针到制定位置 offset:开始的偏移量,也就是代表需要移动偏移的字节数. whence: 给offset参数一个定义,表示要从哪个位置开始偏移:0代表从文件开头算起,1代表开始从当前位置开始算起,2代表从文件末尾开始算起.当有换行时,会被换行截断.                        seek()无返回值,故值为None

Ti:关于DB连接池

1.连接池的概念 网络编程中提出了将Socket放入池中,让多个线程共享这些插座(Socket)对应的线缆(Conenction),DB连接池就是基于连接池的一个实现. ①连接池是创建和管理一个连接的缓冲池的技术,这些连接准备好被任何需要它们的线程使用. @百度百科 ②数据库连接池这一解决方案是指在应用程序启动时,建立足够的数据库连接,并将这些连接组成一个连接池,由应用程序动态的对池中的连接进行申请/使用/释放. 而对于多于连接池中连接数的并发请求,应在请求队列中排队等待连接的释放. 应用程序可

“AS3.0高级动画编程”学习:第二章转向行为(下)

在上一篇里,我们学习了“自主角色”的一些基本行为:寻找(seek).避开(flee).到达(arrive).追捕(pursue).躲避(evade).漫游(wander).这一篇将继续学习其它更复杂,更高级的行为. 原作者:菩提树下的杨过出处:http://yjmyzz.cnblogs.com 一.对象回避(object avoidance) 对象回避的正式解释为:角色预测出对象的行动路径,然后避开他们. 也可以通俗的描述为:假如有一个"灰太狼抓喜羊羊"的游戏场景,“喜羊羊"