html中foreach用法判断,关于html:JavaScript中forEach和filter的用法和原理

JavaScript中有许多好用的数组办法,例如说forEach,filter…等等

那这些办法是都有什么用处呢?以及本人是否写一个办法进去代替呢?

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 公布

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值