篝火寻求和摧毁 - Freecodecamp挑战

时间:2016-03-31 08:18:57

标签: javascript arrays

将为您提供一个初始数组(驱逐舰函数中的第一个参数),后跟一个或多个参数。从初始数组中删除与这些参数具有相同值的所有元素。

  

我有这些说明:

  • 驱逐舰([1,2,3,1,2,3],2,3)应该返回[1,1]。
  • 驱逐舰([1,2,3,5,1,2,3],2,3)应该返回[1,5,1]。
  • 驱逐舰([3,5,1,2,2],2,3,5)应该返回[1]。
  • 驱逐舰([2,3,2,3],2,3)应该返回[]。
  • 驱逐舰([“树”,“汉堡”,53],“树”,53)应该返回[“汉堡”]。

我找到了代码:

function destroyer(arr) {
  var args = Array.prototype.slice.call(arguments);
  args.splice(0,1);
  return arr.filter(function(element) {
    return args.indexOf(element) === -1;
  });
}

我的问题:

  1. 你能用英语解释一下这段代码吗?
  2. 您能为上述挑战提供快捷代码吗?请。

2 个答案:

答案 0 :(得分:0)

我已经使用过滤器功能完成了这个挑战,虽然建议使用'indexOf'来比较数组中的值和要过滤的值。 ````

function destroyer(arr) {
    // Remove all the values
    var temp = [];
    for (var i = 1; i < arguments.length; i++) {
        temp.push(arguments[i]);
        arr = arguments[0].filter(function(value) {
            return ( value !== temp[i - 1]) ;
        });
    }
    return arr;
}
destroyer([1, 2, 3, 1, 2, 3], 2, 3);

````

答案 1 :(得分:0)

function destroyer(arr) {
  var args = arr.slice.call(arguments);
  args.splice(0,1);
  return arr.filter(function(element) {
    return args.indexOf(element) === -1;
   });
}
  • 第1行声明用于质询的整体功能
  • 第2行将arr的参数转换为名为args的数组变量,尽管在某些javascript平台中进行优化时此方法不起作用(优化基本上是您尝试对第二个问题进行的优化)
  • 第3行从args中删除零(0)和一(1)
  • 第4行和第5行通过查看arr中是否存在arg的元素返回过滤arr的最终结果(true / false),如果不存在则返回-1,并返回元素的位置在arr如果是真的
  • 这实际上是相对优化的;有更多优化的代码,但通常它只适用于某些JavaScript平台(mozilla javascript等)