Map

Table of contents

  1. 1. 概述
  2. 2. API
  3. 3. 例子
  4. 4. 浏览器兼容性
  5. 5. 相关链接

该条目记录了 Firefox 12 引入的新特性

未标准化

Warning: SpiderMonkey 中的Map实现是一个原型,并且Map相关的API与语义规范都是不稳定的.SpiderMonkey的Map实现可能不符合最新的ES规范.可能随时会被重写.所以不要在生产环境中使用这些API.

概述

Map 对象是简单的 键/值 映射. 键可以是原始值或者引用值. 判断两个键的值是否相等的算法与 === 操作符不同. 该算法很特殊, 对于Map对象来说, +0 (按照以往的经验与 -0 是严格相等的) 和 -0 是两个不同的键. NaN 也可以作为一个Map对象的键.(译者注:Map可以看作是键为任意类型值的对象,因为普通的javascript对象的键只能是字符串)

API

方法 描述
myMap.get(key) 返回键 key关联的值, 如果没有该键则返回 undefined .
myMap.set(key, value) 设置键 key 在 myMap中的值. 返回 undefined.
myMap.has(key) 返回一个布尔值来表明键 key 是否在 myMap 中.
myMap.delete(key) 删除键 key 及对应的值. 在这之后, myMap.has(key)将返回 false.

ECMAScript 6将有望于在未来的版本中允许脚本遍历一个Map对象中的值. 但由于目前标准还没有规定,所以 SpiderMonkey 也没有实现这个功能.

例子

var myMap = new Map();

var keyObj = {},
    keyFunc = function () {},
    keyString = "a string";

// setting the values
myMap.set(keyString, "value associated with 'a string'");
myMap.set(keyObj, "value associated with keyObj");
myMap.set(keyFunc, "value associated with keyFunc");

// getting the values
myMap.get(keyString);    // "value associated with 'a string'"
myMap.get(keyObj);       // "value associated with keyObj"
myMap.get(keyFunc);      // "value associated with keyFunc"

myMap.get("a string");   // "value associated with 'a string'"
                         // because keyString === 'a string'
myMap.get({});           // undefined, because keyObj !== {}
myMap.get(function() {}) // undefined, because keyFunc !== function () {}

NaN 也可以作为Map对象的键. 虽然 NaN 和任何值甚至和自己都不相等(NaN !== NaN 返回true), 但下面的例子表明, 两个 NaN 作为Map的键来说是没有区别的:

var myMap = new Map();
myMap.set(NaN, "not a number");

myMap.get(NaN); // "not a number"

var otherNaN = Number("foo");
myMap.get(otherNaN); // "not a number"

JavaScript 有两个0值, +0 和 -0. 虽然+0===-0,但是当这两个0作为Map的键时,被认为是两个不同的值.

var myMap = new Map();
myMap.set(0, "positive zero");
myMap.set(-0, "negative zero");

0 === -0; // true

myMap.get(-0); // "negative zero"
myMap.get(0);  // "positive zero"

浏览器兼容性

  • Desktop
  • Mobile

Feature Chrome Firefox (Gecko) Internet Explorer Opera Safari
Basic support -- 12.0 (12) -- -- --
Feature Android Firefox Mobile (Gecko) IE Mobile Opera Mobile Safari Mobile
Basic support -- 12.0 (12) -- -- --

Tags (0)

Edit tags
  • No tags

Attachments (0)

 

附加文件