向着6级跑出的第四步
在文章任何区域双击击即可给文章添加【评注】!浮到评注点上可以查看详情。

Description:

Complete the solution so that it returns true if it contains any duplicate argument values. Any number of arguments may be passed into the function. The solution should implement the most optimal algorithm possible.

solution(1, 2, 3) // returns false
solution(1, 2, 3, 2) // returns true

The only valid return values are true and false.

菜鸟出招

function solution(){
 // return true if this method is called with duplicate argument values 
 var a = arguments;

 return !Array.prototype.every.call(a, function (i) {
   console.log(a);
   var s = Array.prototype.pop.call(a);
   return Array.prototype.every.call(a, function (i) {
   console.log(a);
     return !(i == s);
   });;
 });
}

菜鸟思维

  1. 将数组最后一个元素pop
  2. 与数组剩余的每一个元素对比
  3. 将新数组执行第一步

偷师学艺

function solution(){
  args = Array.prototype.slice.apply(arguments)
  for(var i in args){
    if (args.indexOf(args[i]) < i){
      return true;
    }      
  }

  return false
}

关键字积累

  • slice
  • apply
  • indexOf

菜鸟反思

昨天刚学了一个 Array.prototype.every.call ,现学现卖,竟用了两次。

没想到是简单的问题复杂化了。

大神的解法是:当前元素在数组中的位置比当前位置小的话,说明之前出现过。

呸呸,越说越乱了,还是看代码吧。嘻嘻。

评论
发表评论
5年前
赞了此文章!
WRITTEN BY
BoltDoggy
A doggy named Bolt.
TA的新浪微博
PUBLISHED IN
My Code Wars 我的代码战争【休息一下】

这里讲述的是一个8级(kyu)菜鸟立志成为8段(dan)大神的故事。

他在代码战争中一次次遭遇挫败,而又在乱炖中获得高人指点。

遥想当年自高自大,而今终知天外有天。

坚持要走出一条自己的路,这是一条不归路。


Bolt 在写underscore.js源码分析专栏的时候发现了一个问题,就是看别人写的代码的时候自认为看懂了,但实际上有理解错误自己也不知道。

另外就是看了再牛逼的代码,自己写的时候,还是那些小套套。

于是 Bolt 开了一个新专栏:My Code Wars 我的代码战争。在同一需求下,菜鸟写的代码与大神有什么区别,是思维方式不同,还是什么原因导致的?

欢迎大家来新专栏提供意见和建议。

我的收藏