在 JavaScript 中将数组过滤为仅数字
Filter an Array to only Numbers in JavaScript
使用该filter()
方法将数组过滤为仅数字,例如
arr.filter(value => typeof value === 'number')
. 该filter
方法返回一个数组,其中包含满足条件的所有元素。在我们的例子中,所有类型为number
.
索引.js
const arr = [1, 'test', 3, null]; const onlyNumbers = arr.filter( element => typeof element === 'number' ); console.log(onlyNumbers); // 👉️ [1, 3]
我们传递给
Array.filter
方法的函数会针对数组中的每个元素进行调用。
如果该函数返回一个真值,该元素将被添加到该filter()
方法返回的新数组中。
number
在每次迭代中,我们使用
typeof运算符检查元素是否具有类型
。
该
typeof
运算符返回一个指示值类型的字符串。所有满足条件(具有数字类型)的元素都将添加到新数组中。
如果您有一个可能是有效数字的字符串数组,则可以将该
Number
对象传递给该filter
方法。
索引.js
const arr = ['1', 'test', '3', 5]; const validNumbers = arr.filter(Number); // 👇️ ['1', '3', 5] console.log(validNumbers); const toNumbers = validNumbers.map(Number); console.log(toNumbers); // 👉️ [1, 3, 5]
我们使用该filter
方法遍历数组。在每次迭代中,我们将元素转换为数字并返回结果。
该
Number
对象获取当前元素,将其转换为数字并返回结果。请注意,如果将 的值0
传递给数字对象,则它不会包含在新数组中,因为0
它是一个虚假值。
JavaScript 中的假值是:null
, undefined
, false
, 0
, ""
(空字符串),NaN
(不是数字)。
该filter
方法不会将数组中的字符串转换为数字,它只是返回满足条件的元素。
您可以在过滤后的数组上调用该map()
方法来获取数字数组。