从 JavaScript 中的原始数组中删除另一个数组中存在的项目?

Deleting items present in another array from original array in JavaScript?

如果使用 ES6 标准比较每个元素,我想从原始数组中删除数组中的数字

const numbers = [1,4,2,3,54];
const output = except(numbers,[1,54]);

其中 except 是一个需要数组(原始数组)和用户想要删除的数字的函数

我就是这样实现的,显然还有更好或更简单的实现

function except(array,excluded) {
    console.log(array.filter((item) => excluded.indexOf(item) === -1));   
}

除了期望原始数组和用户要删除的值之外的函数, 根据 MDN 过滤方法创建一个新数组,其中包含通过提供的函数实现的测试的所有元素。

在我们的例子中,提供的函数是 indexOf(item) ,其中 -1 表示如果不等于,因此过滤器函数在删除排除数组中的值后过滤值。 所以我们看到的输出是:

Array(3) [ 4, 2, 3 ]

function except(array, excludes) {
  return array.filter((item) => ! excludes.includes(item));
}

您也可以使用新的 ES6 语法 Array.prototype.includes 如果您需要的话。

同样可以通过使用以下代码的更简单的实现来实现:


function except(array,excluded){
    const output=[];

    for(let element of array)
    if(!excluded.includes(element))
        output.push(element);
    return output;
    
        }

console.log(output);  

函数需要与参数相同的参数,我们使用 for-of-Loop 遍历数组的元素,这里的 if 语句基本上表示原始数组中的那些元素 NOT 应将排除的数组附加(推送)到输出数组。

最后我们没有使用 'else or else if' 因为所有不在数组中的值都将出现在输出数组中并且控件将不再执行 if 块中的任何内容

我们得到相同的输出:

Array(3) [ 4, 2, 3 ]