JavaScript中有许多好用的数组办法,例如说forEach,filter...等等那这些办法是都有什么用处呢?以及本人是否写一个办法进去代替呢?
<!--more-->
forEach办法
日常用法
咱们拿到一组数据的时候,通常须要通过遍历循环拿到本人想要的数据。 forEach
函数可能做到这一点,通常是这样应用的。例如说咱们上面数组这种,须要遍历循环这个数组。就能失去以下后果。
参数传递
forEach() 办法按升序为数组中含有效值的每一项执行一次 callback 函数。可顺次向 callback 函数传入三个参数:
- 数组以后项的值 (ele)
- 数组以后项的索引 (index)
- 数组对象自身 (self)
var arr = [ {name: 'abc', desc: '技术好', sex: 'm'}, {name: 'adsds', desc: '技术好', sex: 'f'}, {name: 'aaseed', desc: '技术好', sex: 'm'}, {name: 'acccc', desc: '技术好', sex: 'f'} ] // forEach() arr.forEach(function (ele, index, self) { console.log(ele, ele.name, ele.sex); })
实现一个forEach()办法
Array.prototype.forEach = function (func) { var len = this.length; var _this = arguments[1] != undefined ? arguments[1] : window; //_this 值的是能够传递this指向 for (var i = 0; i < len; i++) { func.apply(_this, [this[i], i, this]); } } var obj = { name: 'feng' } function deal(ele, index, self) { console.log(ele, index, self, this); } arr.forEach(deal, obj);
就能失去一个性能雷同的办法
filter办法
日常用法
filter() 办法创立一个新数组, 其蕴含通过所提供函数实现的测试的所有元素。MDN如是说。例如说咱们想要失去下面数组中name为accc的数据
var newArr = arr.filter(function (ele, index, array) { return ele.name == 'acccc' })
传递参数
callback
用来测试数组的每个元素的函数。返回
true
示意该元素通过测试,保留该元素,false
则不保留。它承受以下三个参数:element
数组中以后正在解决的元素。index
可选正在解决的元素在数组中的索引。array
可选调了filter
的数组自身。
thisArg
可选执行
callback
时,用于this
的值。
实现一个myfilter办法()
想到filter可能过滤想要的货色,那必定是有遍历的。
Array.prototype.myfilter = function (func) { var arr = []; var len = this.length; var _this = arguments[1] || window; for (var i = 0; i < len; i++) { func.apply(_this, [this[i], i, this]) && arr.push(this[i]); } return arr; } var obj = { name: 'feng' } var newArr = arr.myfilter(function (ele, index, self) { if (ele.sex == 'm') { return true; } else { return false; } }) console.log(newArr);
咱们在调用myfilter
办法把性别是男的过滤出来
本文由博客群发一文多发等经营工具平台 OpenWrite 公布