📜  如何从 JavaScript 中的数组中删除虚假值?(1)

📅  最后修改于: 2023-12-03 14:51:45.457000             🧑  作者: Mango

如何从 JavaScript 中的数组中删除虚假值?

在 JavaScript 中,以下值被认为是虚假值:

  • false
  • null
  • undefined
  • 0
  • -0
  • NaN
  • ''(空字符串)

有时候我们需要从数组中删除这些虚假值,保留有效值。本文将介绍一些方法。

使用 filter 方法

filter() 方法创建一个新数组,其中包含所有通过指定函数测试的元素。我们可以将返回值为真的元素从原数组中抽离出来。

const arr = [0, 1, false, 2, '', 3, 'hello', undefined];
const filteredArr = arr.filter(item => item);
console.log(filteredArr); // [1, 2, 3, "hello"]

在这个例子中,我们通过传递一个匿名函数作为 filter() 方法的参数来执行测试。如果该函数返回的值为真,则该元素包含在过滤后的数组中。在这里,当 item 为虚假值时,该函数的返回值为假,因此它们将不会被包含在过滤后的数组中。

使用 reduce 方法

reduce() 方法将数组中的元素累积到一个值中。我们可以使用它来过滤掉虚假值。

const arr = [0, 1, false, 2, '', 3, 'hello', undefined];
const filteredArr = arr.reduce(
  (accumulator, currentValue) => {
    if (currentValue) {
      accumulator.push(currentValue);
    }
    return accumulator;
  },
  []
);
console.log(filteredArr); // [1, 2, 3, "hello"]

在这个例子中,我们使用 reduce() 方法和一个初始值([])来创建一个新数组。我们遍历数组中的每个元素,并使用 if 语句测试它是否为真。如果是,则将该元素添加到 accumulator 中。最后,我们返回完整的 accumulator

使用 concat 方法

concat() 方法将两个或多个数组合并为一个数组。我们可以使用它来过滤掉虚假值。

const arr = [0, 1, false, 2, '', 3, 'hello', undefined];
const filteredArr = [].concat(arr.filter(item => item));
console.log(filteredArr); // [1, 2, 3, "hello"]

在这个例子中,我们使用 filter() 方法来过滤掉虚假值,并将结果与一个空数组连接起来。这将创建一个新数组,该数组只包含有效值。

结论

在 JavaScript 中,可以使用多种方式从数组中删除虚假值。这些方法包括使用 filter()reduce()concat() 方法。选择一种方法取决于您的个人偏好和情境。