首页
学习
活动
专区
工具
TVP
发布
社区首页 >问答首页 >.map()一个Javascript ES6地图?

.map()一个Javascript ES6地图?
EN

Stack Overflow用户
提问于 2015-06-27 10:42:09
回答 14查看 129.8K关注 0票数 123

你会怎么做呢?本能地,我想做:

代码语言:javascript
复制
var myMap = new Map([["thing1", 1], ["thing2", 2], ["thing3", 3]]);

// wishful, ignorant thinking
var newMap = myMap.map((key, value) => value + 1); // Map { 'thing1' => 2, 'thing2' => 3, 'thing3' => 4 }

我还没有从documentation on the new iteration protocol收集到太多信息。

我知道wu.js,但我正在运行一个Babel项目,不想包含Traceur,它是it seems like it currently depends on

对于如何将how fitzgen/wu.js did it提取到我自己的项目中,我也有点糊涂。

我想要一个清晰、简洁的解释我在这里遗漏了什么。谢谢!

Docs for ES6 Map,仅供参考

EN

回答 14

Stack Overflow用户

回答已采纳

发布于 2015-06-27 10:55:50

所以.map本身只提供了一个你关心的值...也就是说,有几种方法可以解决这个问题:

代码语言:javascript
复制
// instantiation
const myMap = new Map([
  [ "A", 1 ],
  [ "B", 2 ]
]);

// what's built into Map for you
myMap.forEach( (val, key) => console.log(key, val) ); // "A 1", "B 2"

// what Array can do for you
Array.from( myMap ).map(([key, value]) => ({ key, value })); // [{key:"A", value: 1}, ... ]

// less awesome iteration
let entries = myMap.entries( );
for (let entry of entries) {
  console.log(entry);
}

注意,我在第二个例子中使用了很多新东西……...Array.from接受任何可迭代的(任何时候使用[].slice.call( ),加上集合和映射),并将其转换为一个数组...当...Maps被强制转换为数组时,它会转换为数组的数组,其中的el[0] === key && el[1] === value; (基本上与我在上面预先填充示例映射的格式相同)。

在为每个el返回一个对象之前,我在lambda的参数位置使用了数组的解构,以将这些数组点赋给值。

如果您在生产中使用Babel,您将需要使用Babel的浏览器polyfill (包括"core-js“和Facebook的"regenerator")。

我很确定它包含Array.from

票数 94
EN

Stack Overflow用户

发布于 2015-06-27 11:06:20

您应该只使用

代码语言:javascript
复制
var myMap = new Map([["thing1", 1], ["thing2", 2], ["thing3", 3]]);

var newArr = [...myMap].map(value => value[1] + 1);
console.log(newArr); //[2, 3, 4]

var newArr2 = [for(value of myMap) value = value[1] + 1];
console.log(newArr2); //[2, 3, 4]

票数 41
EN

Stack Overflow用户

发布于 2015-06-27 11:29:00

只需使用Array.from(iterable, [mapFn])即可。

代码语言:javascript
复制
var myMap = new Map([["thing1", 1], ["thing2", 2], ["thing3", 3]]);

var newEntries = Array.from(myMap, ([key, value]) => [key, value + 1]);
var newMap = new Map(newEntries);
票数 37
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/31084619

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档