gpt4 book ai didi

javascript - filter(String) 也返回数字

转载 作者:行者123 更新时间:2023-11-30 10:10:46 25 4
gpt4 key购买 nike

谁能解释一下为什么 filter(String) 也返回数字?

var arr = [1, "a", '7'],
numArr = arr.filter(Number), // return 1, 7 (It's Ok)
strArr = arr.filter(String); // Why return 1, a, 7

alert("numArr = " + numArr + "\n" + "strArr = " + strArr);
alert("typeof arr[0] = " + typeof arr[0]);

在上面的例子中,typeof arr[0]number;但为什么它没有在 strArr 中过滤?

谢谢。

最佳答案

.filter() API 将每个数组元素值传递给您提供的函数。该函数返回的值被强制转换为 bool 值并经过测试。只有true结果包含在来自 .filter() 的返回数组中.

Number 构造函数将其参数解释为数字,并返回其值。当 .filter() 将字符串“a”传递给它时机制,它返回 NaN , 解释为 false .

String 构造函数执行类似的操作,但关键区别在于几乎任何东西都可以构成良好的有效字符串。因此,数字 1数组中的返回为 "1" ,转换为 bool 值时为 true因为它是一个非空字符串。

换句话说,Number 和 String 构造函数不是会执行任何类型的数字或字符串值的是/否标识,因此您不能使用它们来过滤按类型排列的数组中的值。

关于javascript - filter(String) 也返回数字,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26847826/

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