📅  最后修改于: 2023-12-03 14:51:45.457000             🧑  作者: Mango
在 JavaScript 中,以下值被认为是虚假值:
false
null
undefined
0
-0
NaN
''
(空字符串)有时候我们需要从数组中删除这些虚假值,保留有效值。本文将介绍一些方法。
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()
方法将数组中的元素累积到一个值中。我们可以使用它来过滤掉虚假值。
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()
方法将两个或多个数组合并为一个数组。我们可以使用它来过滤掉虚假值。
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()
方法。选择一种方法取决于您的个人偏好和情境。