map()方法的详解:
array.map(function(currentValue,index,arr), thisValue);传参与forEach或者Filter相同,切记:如果操作新返回的数组,es5数组拓展中使用的这些方法,都需要克隆一下,因为示例中都是复制元素(对象)地址。
上代码:
<!DOCTYPE html>
<html lang="en">
<head>
<meta charset="UTF-8">
<title>数组扩展</title>
</head>
<body>
<ul>
<li></li>
<li></li>
<li></li>
<li></li>
</ul>
<script>
// forEach 遍历数组
var personArr = [
{name:'王一',des:'有病',sex:'m'},
{name:'王二',des:'有钱',sex:'f'},
{name:'王三',des:'有才',sex:'f'},
{name:'王四',des:'有病',sex:'m'},
];
//map 映射 x -> y
//map 返回新数组 function ele index self {}
Array.prototype.myMap = function(fn){
var _arr = this, len = _arr.length, param2 = arguments[1] || window,newArr = [];
for(var i = 0; i < len; i++){
newArr.push(fn.apply(param2,[_arr[i],i,_arr]));//如果需求,可以使用深度克隆
}
return newArr
}
var newArr = personArr.myMap(function(ele,index,self){
console.log(ele,index,self,this);
ele.name = ele.name + 10;
return ele;
},{name:'tac'});
</script>
</body>
</html>