map(Number) 在这里做什么?

2024-01-14

var strArr = ["[1,2,3,4]","[1,2,3,4"]];
var arr1 = strArr[0].match(/\d+/g).map(Number); 

我知道map()方法创建一个新数组,其中包含对调用数组中每个元素调用所提供函数的结果。这里作为Number是一个包装对象我无法理解发生了什么。

我的理解是,如果我控制台日志删除映射方法,我会得到一个字符串数组,而包含映射方法,我会得到一个数字数组。我想知道映射如何能够获取每个字符串并转换为数字。


var arr1 = strArr[0].match(/\d+/g).map(Number);

相当于

var arr1 = strArr[0].match(/\d+/g).map((str, ind, arr) => Number(str, ind, arr));

原因Number尽管传递额外的参数仍然有效,因为它忽略了除第一个参数之外的所有内容。您不能期望每个函数都有相应的行为,因为并非所有函数都会忽略除第一个参数之外的所有内容,但在这种情况下,这是一个方便的快捷方式。另一个很好用的简洁示例是将真值和假值转换为布尔值:

var arrBool = arrAny.map(Boolean);
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

map(Number) 在这里做什么? 的相关文章

随机推荐