📅  最后修改于: 2023-12-03 14:53:18.745000             🧑  作者: Mango
在 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 中过滤数组以获取只包含数字的元素的方法。你可以根据自己的需要选择其中的一种方法。