📜  如何过滤数组以仅获取数字 - Javascript (1)

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

如何过滤数组以仅获取数字 - JavaScript

在 JavaScript 中,我们经常需要对数组进行处理,以获取特定类型的元素。如果我们想要从一个数组中过滤出只包含数字的元素,可以使用几种不同的方法。

方法一:使用 filter() 方法

JavaScript 的 filter() 方法可以通过传入一个回调函数来过滤数组。我们可以在回调函数中使用 typeof 操作符来检查数组元素的类型是否为数字。回调函数应该返回一个布尔值,指示是否保留该元素。

const array = [1, '2', 3, NaN, 'four', 5];

const numbersOnly = array.filter(item => typeof item === 'number');
console.log(numbersOnly); // [1, 3, 5]

在上面的代码中,我们使用 filter() 方法和箭头函数来过滤出只包含数字的元素。通过 typeof item === 'number' 的判断,我们只保留了数字类型的元素。

方法二:使用 forEach() 循环

另一种使用纯 JavaScript 的方法是使用 forEach() 循环遍历数组,然后使用 typeof 操作符检查每个元素的类型。我们可以创建一个新数组,并将只包含数字的元素添加到该数组中。

const array = [1, '2', 3, NaN, 'four', 5];

const numbersOnly = [];
array.forEach(item => {
  if (typeof item === 'number') {
    numbersOnly.push(item);
  }
});
console.log(numbersOnly); // [1, 3, 5]

上面的代码中,我们创建了一个名为 numbersOnly 的空数组。然后通过 forEach() 循环遍历原始数组,对于每个元素,我们通过检查 typeof item === 'number' 来判断是否为数字,如果是数字,则将其添加到 numbersOnly 中。

注意:如果原始数组包含非法的数字(例如 '2''four'),这些将被视为非数字并被过滤掉。

方法三:使用正则表达式

如果我们想要过滤出只包含数字和数字字符串的元素,可以使用正则表达式。我们可以通过正则表达式的 test() 方法来检查每个元素是否匹配数字模式。

const array = [1, '2', 3, NaN, 'four', 5];

const numbersOnly = array.filter(item => /^\d+$/.test(item));
console.log(numbersOnly); // [1, '2', 3, 5]

在上面的代码中,我们使用正则表达式 /^\d+$/ 来匹配由数字组成的字符串。如果元素是一个数字或数字字符串,它将保留在新的数组中。

正则表达式 /^\d+$/ 的解释:

  • ^ 表示开始位置
  • \d 表示数字字符
  • + 表示匹配一个或多个前面的元素
  • $ 表示结束位置

该正则表达式匹配由一个或多个数字组成的字符串,这意味着它将匹配数字和数字字符串。

以上是几种在 JavaScript 中过滤数组以获取只包含数字的元素的方法。你可以根据自己的需要选择其中的一种方法。