繁体   English   中英

Bonfire Seek and Destroy - Freecodecamp 挑战赛

[英]Bonfire Seek and Destroy- Freecodecamp Challenge

您将获得一个初始数组(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"]。

我找到了代码:

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. 你能给出上面挑战的快捷代码吗? 请。

我已经使用 filter 函数完成了这个挑战,但建议 t 也使用 '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);

````

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 为假和真的最终结果(真/假),如果不存在则返回 -1,如果为真则返回元素在 arr 中的位置

  • 这个其实是比较优化的; 有更多优化的代码,但通常它只在某些 javascript 平台(mozilla javascript 等)上可行

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM