📌  相关文章
📜  从数组 javascript 中删除未定义(1)

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

从 JavaScript 数组中删除未定义的元素

在JavaScript中,当我们从数组中删除元素时,数组的元素索引会发生改变。如果在循环过程中删除元素,可能会导致出现预期之外的行为。此外,数组中可能包含未定义的元素,这些元素需要被删除以避免后续的错误。下面将讨论如何从数组中删除未定义的元素。

方法1:使用 filter() 方法

JavaScript中的 filter() 方法可以用于过滤出符合特定条件的元素,并返回一个新数组。因此,我们可以使用 filter() 方法来过滤出所有非 undefined 的元素,生成一个新数组。

const arr = [2, 5, undefined, 8, undefined, 'hello', true];
const filteredArr = arr.filter((el) => el !== undefined);
console.log(filteredArr); // [2, 5, 8, 'hello', true]
方法2:使用 for 循环

当然,我们也可以使用 for 循环来遍历数组并删除所有 undefined 的元素。但是,需要注意的是,在删除元素时,要确保索引值不会发生改变。一种方法是使用 splice() 方法来删除元素,另一种方法是将元素设置为 nullNaN 等值而不是删除。

const arr = [2, 5, undefined, 8, undefined, 'hello', true];
for (let i = 0; i < arr.length; i++) {
  if (typeof arr[i] === 'undefined') {
    arr.splice(i, 1); // 删除元素,索引值会改变
    i--; // 处理索引值
  }
}
console.log(arr); // [2, 5, 8, 'hello', true]
方法3:使用 while 循环

for 类似,也可以使用 while 循环来遍历数组。

const arr = [2, 5, undefined, 8, undefined, 'hello', true];
let i = 0;
while (i < arr.length) {
  if (typeof arr[i] === 'undefined') {
    arr.splice(i, 1); // 删除元素,索引值会改变
    continue; // 跳过索引值处理
  }
  i++; // 处理索引值
}
console.log(arr); // [2, 5, 8, 'hello', true]

无论使用哪种方法,都可以轻松从 JavaScript 数组中删除 undefined 元素,确保数组的完整性和正确性。