📜  从数组 javascript 中删除空值(1)

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

从数组 JavaScript 中删除空值

在 JavaScript 中,我们有一个很常见的任务:从数组中删除空值。这个任务似乎很简单,但实际上需要注意一些细节。下面我们将介绍不同的方法来完成这个任务。

方法一:使用 for 循环
const array = ["foo", "", "bar", undefined, null, "baz"];
for (let i = 0; i < array.length; i++) {
  if (array[i] === "" || array[i] === undefined || array[i] === null) {
    array.splice(i, 1);
    i--;
  }
}
console.log(array); // ["foo", "bar", "baz"]

这种方法使用 for 循环遍历数组,在循环中使用条件语句判断元素是否为空,如果是,则使用 splice 方法删除这个元素。需要注意的是,在删除元素后,i 的值需要减 1,以便下一个循环可以正确处理元素。

方法二:使用 filter 方法
const array = ["foo", "", "bar", undefined, null, "baz"];
const filteredArray = array.filter(item => item !== "" && item !== undefined && item !== null);
console.log(filteredArray); // ["foo", "bar", "baz"]

这种方法使用数组的 filter 方法,参数是一个回调函数,在回调函数中判断元素是否为空。这种方法看起来更简洁,但实际上创建了一个新数组来保存过滤后的元素,而原数组并没有改变。

方法三:使用 reduce 方法
const array = ["foo", "", "bar", undefined, null, "baz"];
const reducedArray = array.reduce((accumulator, currentValue) => {
  if (currentValue !== "" && currentValue !== undefined && currentValue !== null) {
    accumulator.push(currentValue);
  }
  return accumulator;
}, []);
console.log(reducedArray); // ["foo", "bar", "baz"]

这种方法使用数组的 reduce 方法,参数是一个回调函数和初始值。回调函数中判断元素是否为空,如果不为空,则加入累加器中。这种方法也创建了一个新数组来保存过滤后的元素,但与 filter 方法不同的是,它使用了 reduce 方法,可以进一步处理数组的元素。

无论使用哪种方法,删除空值的操作都很简单。但需要记住在循环中正确处理元素的下标,以及使用 filter 或 reduce 方法会创建一个新数组并不改变原数组。