zoukankan      html  css  js  c++  java
  • JavaScript

    问题:

    var arrs = ['1', '2', '3']; 
    var r = arrs.map(parseInt); 
    alert(r);//1,NaN,NaN
    

    map

     arr.map(function callback(currentValue[, index[, array]]) {
        // Return element for new_array
    }[, thisArg])
    

    parseInt

    parseInt(string, radix);
    

    因为map()接收三个参数,parseInt()接收两个参数,所以map的第三个参数被parseInt忽略了。
    现在来分析下程序,假如现在执行arr的第一个元素,即'1';对应到map参数可知,此时传入map的第一个参数即为被传递的元素'1';第二个参数即为其索引0;
    这两个参数被传入parseInt中,即parseInt('1', 0);对应到上述parsent的参数规则可知,此时结果为1;
    同理,parseInt('2',1) //radix小于2 返回NaN
    parseInt('3',2) //3是非法的二进制数,返回NaN

    解决:

    function  parseInt_base10(s)
    {
        return parseInt(s,10);
    }
    
    r = arrs.map(parseInt_base10,arrs);
    //或者r = arrs.map(parseInt_base10);
    alert(r);//[1,2,3]
    
  • 相关阅读:
    java基础(上)
    java前奏
    Spring框架介绍
    bootstrap简单学习
    存储过程和函数
    触发器
    视图
    索引
    mysql增、删、改数据
    子查询
  • 原文地址:https://www.cnblogs.com/allen2333/p/8971757.html
Copyright © 2011-2022 走看看