JavaScript的数组迭代器函数map和filter,可以遍历数组时产生新的数组,和python的map函数很类似
1> filter是满足条件的留下,是对原数组的过滤;
2> map则是对原数组的加工,映射成一一映射的新数组
1 let arr = [1, 2, 3, 4];
2 let newArr = arr.map(function(item) { // 使用map方法
3 return item * 2;
4 });
5 console.log(newArr); // [2, 4, 6, 8]
6
7
8 let arr = [1, 2, 3, 4];
9 let newArr = arr.filter(function(item) { // 使用filter方法
10 if (item % 2 !== 0) {
11 return item;
12 }
13 });
14 console.log(newArr); // [1, 3];
map()方法将调用的数组的每个元素传递给指定的函数,并返回一个数组,它包含该函数的返回值。
传递给map()的函数的调用方式和传递给forEach()的函数的调用方式一样。但传递给map()的函数应该有返回值。注意:map()返回的是新数组:它不修改调用的数组。如果是稀疏数组,返回的也是相同方式的稀疏数组:它具有相同的长度,相同的缺失元素。
在我们的例子中,回调函数只有一个参数,即数组中元素的值 (val 参数) ,但其实,你的回调函数也可以支持多个参数,譬如:元素的索引index、原始数组arr。
使用 map 方法来为 oldArray 中的每一项增加3,并且在 newArray 中保存它们。 oldArray 不应该被改变。
代码:
var oldArray = [1,2,3,4,5];
var newArray = oldArray.map(function(val){return val+3;});
下面是工作用中箭头函数和map函数同时用到的,对表格的删除时用到的
function delectCompete(){
var s = $("#clientGrid").datagrid('getSelections');
if(s == null || s == "") {
return $.messager.alert("提示", "请至少选择一行");
}
var roomIdArray = s.map(item=>item.roomId);
var roomIdStr = roomIdArray.toString(',');
$.post("client!deleteRoomInfo.action",{
"roomIds":roomIdStr,
},
function(data){
data = JSON.parse(data);
$.messager.alert("提示", data.message);
$("#clientGrid").datagrid("reload");
}
)
}
网友评论