js es6系列——map函數


正文

map,必要解釋就是map不是地圖的意思,而是映射的意思。

這里就簡單的介紹了這個map了。

array.map(callback,[ thisObject]);

看下這個案例后,我們發現了就發現了一個問題。

以前呢,我寫道:map是一個過濾器,其實是將filter弄混了,當然我也介紹過filter。

那么什么是映射呢?

這個時候數學似乎顯得非常重要了,來看下定義:

兩個非空集合A與B間存在着對應關系f,而且對於A中的每一個元素x,B中總有有唯一的一個元素y與它對應,就這種對應為從A到B的映射,記作f:A→B。其中,b稱為元素a在映射f下的象,記作:b=f(a)。a稱為b關於映射f的原象。

集合A中所有元素的象的集合稱為映射f的值域,記作f(A)。

映射,或者射影,在數學及相關的領域還用於定義函數。函數是從非空數集到非空數集的映射,而且只能是一對一映射或多對一映射。

ok,這下明白了吧。

在實際使用的時候,我們可以利用map方法方便獲得對象數組中的特定屬性值們。例如下面這個例子(之后的兼容demo也是該例子):

var users = [
{name: "張含韻", "email": "zhang@email.com"},
{name: "江一燕", "email": "jiang@email.com"},
{name: "李小璐", "email": "li@email.com"}
];

var emails = users.map(function (user) { return user.email; });

console.log(emails.join(", ")); // zhang@email.com, jiang@email.com, li@email.com

Array.prototype擴展可以讓IE6-IE8瀏覽器也支持map方法:

if (typeof Array.prototype.map != "function") {
  Array.prototype.map = function (fn, context) {
    var arr = [];
    if (typeof fn === "function") {
      for (var k = 0, length = this.length; k < length; k++) {      
         arr.push(fn.call(context, this[k], k, this));
      }
    }
    return arr;
  };
}


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM