gpt4 book ai didi

javascript - Array.prototype.filter(Number) 中的 'Number' 是如何工作的?

转载 作者:可可西里 更新时间:2023-11-01 02:40:23 26 4
gpt4 key购买 nike

我发现使用 Array.prototype.filter 方法从字符串中删除所有非数字的方式很酷,但我不完全确定它是如何使用 Number 实现这个的原型(prototype):

var arr = '75number9';

arr.split(/[^\d]/).filter(Number); // returns [75, 9]

当我检查 typeof Number 时,我返回 'function'。这是怎么回事?

让我更加困惑的是,如果我用 String 替换 Number,结果是一样的。它仍然有效!

arr.split(/[^\d]/).filter(String); // returns [75, 9]

ArrayObject 作为参数,另一方面,返回这个:

["75", "", "", "", "", "", "9"]

非常想知道这个!

最佳答案

Number 是一个试图返回数字的(构造函数)函数。给它一个文字数字或一个可以解析为数字的字符串,然后它返回该数字。给它别的东西,它返回 NaN

过滤器返回回调函数(在本例中为 Number)返回真值的值。 != 0!= NaN 的数字为真,因此返回。

因此,您的示例不会返回 0 值:

var arr = '75number0';
arr.split(/[^\d]/).filter(Number);
// ["75"]

注意返回数组的值仍然是字符串。如果我们希望它们是数字,我们可以使用 map():

arr.split(/[^\d]/).filter(Number).map(Number);
// [75, 9]

在使用 String 构造函数而不是 Number 的情况下,它可以工作,因为 String 正在为空字符串返回空字符串给定,空字符串 ('') 是假的,就像 0 一样。

关于javascript - Array.prototype.filter(Number) 中的 'Number' 是如何工作的?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/22874106/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com