js map方法的使用

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了js map方法的使用相关的知识,希望对你有一定的参考价值。

原型:   array.map(callback,[ thisObject]);

 callback的参数类似:
[].map(function(value, index, array) {
    // ...
});
三个参数为:当前正在遍历的元素, 元素索引, 原数组本身.


示例:
["1", "2", "3"].map(returnInt);// 返回[1,2,3]
function returnInt(element){
  return parseInt(element,10);
}

 

1. 方法概述

     map() 方法返回一个由原数组中的每个元素调用一个指定方法后的返回值组成的新数组。

2. 例子

   2.1 在字符串中使用map

  在一个 String  上使用 map 方法获取字符串中每个字符所对应的 ASCII 码组成的数组:

var map = Array.prototype.map
var a = map.call("Hello World", function(x) { return x.charCodeAt(0); })
// a的值为[72, 101, 108, 108, 111, 32, 87, 111, 114, 108, 100]

   2.2 易犯错误

   通常情况下,map 方法中的 callback 函数只需要接受一个参数(很多时候,自定义的函数形参只有一个),就是正在被遍历的数组元素本身。

   但这并不意味着 map 只给 callback 传了一个参数(会传递3个参数)。这个思维惯性可能会让我们犯一个很容易犯的错误。

  

技术分享
// 下面的语句返回什么呢:
["1", "2", "3"].map(parseInt);
// 你可能觉的会是[1, 2, 3]
// 但实际的结果是 [1, NaN, NaN]

// 通常使用parseInt时,只需要传递一个参数.但实际上,parseInt可以有两个参数.第二个参数是进制数.可以通过语句"alert(parseInt.length)===2"来验证.
// map方法在调用callback函数时,会给它传递三个参数:当前正在遍历的元素, 元素索引, 原数组本身.
// 第三个参数parseInt会忽视, 但第二个参数不会,也就是说,parseInt把传过来的索引值当成进制数来使用.从而返回了NaN.

/*
//应该使用如下的用户函数returnInt

function returnInt(element){
  return parseInt(element,10);
}

["1", "2", "3"].map(returnInt);
// 返回[1,2,3]
*/
 
以上摘自网络,由此可以写出一个小Demo,比如格式化日期字符串:
 
 
 

function formatTime() {

  var date=new Date();


  var year = date.getFullYear()
  var month = date.getMonth() + 1
  var day = date.getDate()

  var hour = date.getHours()
  var minute = date.getMinutes()
  var second = date.getSeconds()


  return [year, month, day].map(formatNumber).join(‘/‘) + ‘ ‘ + [hour, minute, second].map(formatNumber).join(‘:‘)
};

 

 function formatNumber(n) {
  n = n.toString()
  return n[1] ? n : ‘0‘ + n
}

最终结果格式:"2017/05/19 00:37:20"
 

















以上是关于js map方法的使用的主要内容,如果未能解决你的问题,请参考以下文章

10个JavaScript代码片段,使你更加容易前端开发。

几个关于js数组方法reduce的经典片段

AJAX相关JS代码片段和部分浏览器模型

js经常用到的代码片段

在片段中添加 Google Maps API V2

将多个输出中的hls属性设置为单独的片段代码