• 使用map()的小陷阱:parseInt


    假设我们想要把一个字符串数组的每一项转换成整数,我们很自然就想到了把parseInt作为回调函数传给map()函数,但这样做可能会出现意想不到的结果:

    var strArr = ["1", "2", "3"];
    var numArr = strArr.map(parseInt);
    console.log(numArr); // [1, NaN, NaN]

    在上面的代码中,我们尝试使用map()把数组strArr的每一项由字符串转换成数字,但发现只有第一项成功了,剩余两项却变成了NaN。

    出现这种情况的原因是,parseInt()默认接受两个参数,第一个参数是要转换成整数的字符串,第二个参数表示传入的值是几进制格式的(注意不是转换成几进制的值),而map会默认地把三个参数element, index, array传给callback函数。在上面这种情况下,虽然第三个参数被忽略了,但前两个参数都传给了parseInt,所以以上代码可以看作是:

    var numArr = strArr.map(function(ele,index) {
        return parseInt(ele, index);
    });
    
    //分别来看每一项的话
    
    //parseInt("1", 0) => 1
    //parseInt("2", 1) => NaN
    //parseInt("3", 2) => NaN

    解决办法

    var numArr = strArr.map(function(ele) {
        return parseInt(ele, 10);
    });
    
    // 或者使用箭头函数
    
    var numArr = strArr.map(ele => parseInt(ele, 10));

    注意:因为多数情况下,我们要解析的值都是十进制的,所以强烈建议使用parseInt时始终把10作为第二个参数。

  • 相关阅读:
    切割窗口url
    软键盘弹出底部被顶上去
    C语言字符串处理标准库函数的源码(转)
    slapd配置文件详述
    OPENLDAP安装配置方法
    const成员函数
    OPENLDAP概述
    当前比较有名的Xml数据库
    『转』使用 Scalable Vector Graphics 为 ASP.NET 构建基于 XML 的灵活、轻量的图像
    SqlCommand_ExecuteNonQuery 方法返回值为1的解释
  • 原文地址:https://www.cnblogs.com/sukiY/p/9194486.html
Copyright © 2020-2023  润新知