2017-10-20 84 views
-1

这里是使用我当前的代码forEach()转换的forEach函数来在JavaScript映射函数

1.

// loop with assignment 
userForm.forEach(field => { 
    field.value = '' 
}) 

2.

// if array1 has field which array2 have, assign it 
array1.forEach(field => { 
    if (Object.keys(array2).indexOf(field.name) > -1) { 
     field.value = array2[field.name] 
    } 
}) 

3.

array1.forEach(field => { 
    field.shouldShow = false 
    field.start = moment(invoice.start).format('YYYY/MM/DD') 
    field.end = moment(invoice.end).format('YYYY/MM/DD') 
    // ..brabrabra asignment 
}) 

是possi ble将所有forEach()功能变为map()功能?

+0

它不清楚你正在努力实现 – Rajesh

+0

正如你的foreach过的对象,只有改变它的性质是什么,它不会使很大程度上有所不同。当你使用map时,你必须添加'return field'。 –

+0

想让它更加功能如下: array1.map(field => xxxxxx) – KevinHu

回答

0

用法

的foreach:此遍历列表,并施加与副作用每个列表构件一些操作(例如:保存每个列表项到数据库)

地图:此遍历列表,变换该列表中的每个成员,并返回相同的尺寸的另一个列表与变换件(例如:转化的字符串列表为大写)

参考

https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEachhttps://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

0

发现这个基于Web尝试

var m = new Map(); 
 
m.set(1, "car"); 
 
m.set(2, "bike"); 
 
m.set("colors", 2); 
 
m.set({x:1}, 3); 
 

 
m.forEach(function (item, key, mapObj) { 
 
    document.write(item.toString() + "<br />"); 
 
}); 
 

 
document.write("<br />"); 
 
document.write(m.get(2));