📜  js从数组中删除所有值的对象 - Javascript(1)

📅  最后修改于: 2023-12-03 15:32:26.061000             🧑  作者: Mango

JS 从数组中删除所有值的对象

在 JavaScript 中,我们有时需要从数组中删除所有值为特定对象的元素。下面将向您展示如何实现这一目标。

方法一:使用 filter 方法和 Object.is 函数

我们可以使用数组的 filter 方法和 Object.is 函数来删除数组中所有值为特定对象的元素。具体实现如下:

const removeObjectsFromArray = (arr, obj) => {
  return arr.filter(item => !Object.is(item, obj));
}

代码片段:

const arr = [1, 'hello', {}, null, 'world', {}, undefined, { a: 1 }, null];
console.log(removeObjectsFromArray(arr, null));
console.log(removeObjectsFromArray(arr, {}));
console.log(removeObjectsFromArray(arr, 'hello'));

在上述示例中,我们创建了一个数组 arr,其中包含了一些不同类型的对象。然后,我们分别使用 removeObjectsFromArray 函数和不同的参数来删除数组中所有的 null、空对象和字符串 'hello'。

输出结果:

[ 1, 'hello', {}, 'world', {}, undefined, { a: 1 } ]
[ 1, 'hello', null, 'world', undefined, { a: 1 }, null ]
[ 1, {}, null, 'world', {}, undefined, { a: 1 }, null ]
方法二:使用 for 循环和 splice 方法

除了使用 filter 方法之外,我们还可以使用传统的 for 循环和 splice 方法来删除所有值为特定对象的元素。具体实现如下:

const removeObjectsFromArray = (arr, obj) => {
  for (let i = 0; i < arr.length; i++) {
    if (Object.is(arr[i], obj)) {
      arr.splice(i, 1);
      i--;
    }
  }
  return arr;
}

代码片段:

const arr = [1, 'hello', {}, null, 'world', {}, undefined, { a: 1 }, null];
console.log(removeObjectsFromArray(arr, null));
console.log(removeObjectsFromArray(arr, {}));
console.log(removeObjectsFromArray(arr, 'hello'));

在上述示例中,我们同样创建了一个数组 arr,然后分别使用 removeObjectsFromArray 函数和不同的参数来删除数组中所有的 null、空对象和字符串 'hello'。

输出结果:

[ 1, 'hello', {}, 'world', {}, undefined, { a: 1 } ]
[ 1, 'hello', 'world', undefined, { a: 1 } ]
[ 1, null, 'world', undefined, { a: 1 } ]
总结

以上就是两种常用的方式来删除 JavaScript 数组中所有值为特定对象的元素。您可以根据实际情况来选择合适的方式,以提高代码的效率和可读性。