代码之家  ›  专栏  ›  技术社区  ›  dragi

在Javascript中按值从数组中删除元素

  •  1
  • dragi  · 技术社区  · 8 年前

    这对我来说有点模糊,但我正在尝试创建一个简单的函数,它接受一个数组和一些参数,并从数组中删除这些参数。

    例如,如果我有一个数组 [1,2,3,4] 还有争论 2,3 [1,4]

    到目前为止,我的情况是:

    const removeFromArray = (arr) => {
        let args = Array.from(arguments);
    
        return arr.filter(function (item) {
            !args.includes(item);
        });
    }
    

    4 回复  |  直到 8 年前
        1
  •  4
  •   Nina Scholz    8 年前

    你可以接受 rest parameters ... 对于要排除值的项。

    const removeFromArray = (array, ...items) => array.filter(item => !items.includes(item));
    
    console.log(removeFromArray([1, 2, 3, 4], 1, 4))

    要使用样式,需要排除 arguments

    let args = Array.from(arguments).slice(1);
    //                              ^^^^^^^^^
    
        2
  •  2
  •   Ele    8 年前

    在arrow函数中,隐式对象 arguments function ,同样,您需要返回函数的结果 includes 在函数的处理程序中 filter .

    const removeFromArray = function() {
        let [arr, ...args] = Array.from(arguments);
        return arr.filter(function (item) {
            return !args.includes(item);
        });
    }
    
    console.log(removeFromArray([1,2,3,4], 2, 3));
        3
  •  0
  •   Marcel T.    8 年前

    为要删除的项添加第二个参数。

    const removeFromArray = (arr, toBeRemoved) => {
        return arr.filter(item => !toBeRemoved.includes(item));
    }
    

    呼叫示例:

    const array = [1, 2, 3, 4]
    const newArray = removeFromArray(arr, [2, 3])
    console.log(newArray) // [1, 4]
    
        4
  •  -1
  •   nikksan    8 年前

    把它贴在墙上 Array.prototype ,可能在别的地方用

    Array.prototype.remove = function(...args) {
      return this.filter(v => !args.includes(v));
    }