美文网首页
["1", "2", "3"].map(parseInt)?

["1", "2", "3"].map(parseInt)?

作者: BugMyGod | 来源:发表于2018-05-15 14:44 被阅读0次

    转自

    ["1", "2", "3"].map(parseInt)得到什么?
    答案是:[1, NaN, NaN].
    原因:parseInt接收的是两个参数,map传递的是3个参数。

    map函数定义:

    arr.map(callback[,thisArg]);
    

    callback函数需要以下3个值:
    currentValue:当前处理数值
    index:处理的数值的索引值
    array:map函数处理的函数值

    thisArg可选. callback函数里的this值 默认是window对象

    parseInt函数定义:

    parseInt(string, radix);
    

    string: 需要转化的字符,如果不是字符串会被转换,忽视空格符。
    radix:数字2-36之前的整型。默认使用10,表示十进制。
    需要注意的是,如果radix在2-36之外会返回NaN。
    执行下面的函数:

    var parseInt = function (string, radix, others) {
        return string + '-' + radix + '-' + others;
    };
    ['1','2','3'].map(parseInt);
    
    得到: image.png

    如果放到parseInt函数里面则是:

    parseInt('1', 0);
    parseInt('2', 1);
    parseInt('3', 2);
    

    所以得到1,NaN,NaN

    Map函数的其他用途:

    例1:遍历querySelectorAll对象,并执行相关函数

    var elems = document.querySelectorAll('div');
    var values = Array.prototype.map.call(elems, function (elem) {
        return elem;
    });
    

    例2:反转字符串

    var str = '12345';
    Array.prototype.map.call(str, function(x){
        return x;
    }).reverse().join();
    

    还有一种翻转字符的方法:

    var str = '12345';
    var strre = str.split('').reverse().join('');
    

    附:这个方法可以判断回文

    var str = '12345';
    var str1 = Array.prototype.map.call(str, function(x){
        return x;
    }).reverse().join();
    
    if (str === str1) {
       console.log('true');
    } else {
       console.log('false');
    }
    

    相关文章

      网友评论

          本文标题:["1", "2", "3"].map(parseInt)?

          本文链接:https://www.haomeiwen.com/subject/buoedftx.html