簡體   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