Javascript 在不可变JS映射上迭代
考虑以下代码:Javascript 在不可变JS映射上迭代,javascript,immutable.js,Javascript,Immutable.js,考虑以下代码: const map1 = Immutable.Map({a:1, b:2, c:3}); const myMap = map1.map((elem, index) => { return "Hello " + elem; }) console.log(myMap.toJS()); // prnts {a: "Hello 1", b: "Hello 2", c: "Hello 3"} 我希望输出为['Hello1','Hello2','Hello3'],但是ma
const map1 = Immutable.Map({a:1, b:2, c:3});
const myMap = map1.map((elem, index) => {
return "Hello " + elem;
})
console.log(myMap.toJS());
// prnts {a: "Hello 1", b: "Hello 2", c: "Hello 3"}
我希望输出为
['Hello1','Hello2','Hello3']
,但是map
也给了我一个带键的对象。为什么我不能像普通JavaScriptmap
works那样获得数组作为输出?达到预期效果的最佳方式是什么?(我可以使用forEach
而不是map
,并将每次迭代的结果推送到一个数组中,但我正在寻找更好的方法)。只需使用
可运行的代码段如下所示:
const map1 = Immutable.Map({a:1, b:2, c:3});
const myMap = map1.map((elem, index) => {
return "Hello " + elem;
})
console.log(Array.from(myMap.keys()));
使用toArray()代替toJS():
constmap1=Immutable.Map({a:1,b:2,c:3});
常量myMap=map1.map((元素,索引)=>{
返回“Hello”+elem;
})
log(myMap.toArray())代码>
仅使用reduce提供不同的味道
constmap1=Immutable.Map({a:1,b:2,c:3});
const myMap=map1.reduce((累加器,值)=>{
累加器。按下(“Hello”+值);
回流蓄能器;
}, [])
console.log(myMap)代码>
const map1 = Immutable.Map({a:1, b:2, c:3});
const myMap = map1.map((elem, index) => {
return "Hello " + elem;
})
console.log(Array.from(myMap.keys()));