FCC263:Seek and Destroy

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了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找我玩 : )

以上是关于FCC263:Seek and Destroy的主要内容,如果未能解决你的问题,请参考以下文章

javascript [Seek&Destroy]用于删除数组#vanilla #script中所有给定值的脚本

网易官方极客战记(codecombat)攻略-森林-捉迷藏seek-and-hide

Codeforces Round #263 (Div. 2) D. Appleman and Tree 树形dp

FCC_Intermediate Algorithm Scripting_Search and Replace

Luogu 2951 捉迷藏Hide and Seek

BZOJ 1941 [Sdoi2010]Hide and Seek