JS中数组的遍历、判断、筛选处理怎么实现
Admin 2022-09-05 群英技术资讯 400 次浏览
这里先给出一个数组(以下例子通用):
var arr = [1,-2,3,4,-5];
然后我要做事情的就是,将数组中的每一项翻倍。
arr.forEach(function(item,index,array){
array[index] = item * 2;
});
console.log(arr); // [2,-4,6,8,-10]
可以看到,forEach()可以传入一个匿名函数作为参数,而该匿名函数有含有三个参数,其依次代表数组遍历时的当前元素item,数组遍历时的当前元素的索引index,以及正在遍历的数组array。有了这三个参数,可以方便我们做很多事情,比如说示例当中将每一项数组元素翻倍,这时需要用到第一个参数item。但是,仅仅只是将item乘以2可不行,我们还得将其赋值给原来的数组,这时我们就得用到后面两个参数index和array。
根据上述可知,array[index]是全等于item的。
arr.forEach(function(item,index,array){
console.log(array[index] === item); // true
});
var newArr = arr.map(function(item,index,array){
return item * 2;
});
console.log(newArr); // [2,-4,6,8,-10]
可以看到,该方法与forEach()的功能类似,只不过map()具有返回值,会返回一个新的数组,这样处理数组后也不会影响到原有数组。
var isEvery = arr.every(function(item,index,array){
return item > 0;
});
console.log(isEvery); // false
可以看到,示例中是要判断数组arr中的元素是否都为正数,很显然不是,所以该方法最终返回false。
var isSome = arr.some(function(item,index,array){
return item < 0;
});
console.log(isSome); // true
可以看到,该方法与every()类似,示例中是要判断数组arr中是否存在负数元素,很显然存在,所以该方法最终返回true。
var minus = arr.filter(function(item,index,array){
return item < 0;
});
console.log(minus); // [-2, -5]
可以看到,示例中是要筛选出数组arr中的所有负数,所以该方法最终返回一个筛选后的新数组[-2, -5]。
补充: 以上五大方法除了传递一个匿名函数作为参数之外,还可以传第二个参数,该参数用于指定匿名函数内的this指向,例如:
// 只传一个匿名函数
arr.forEach(function(item,index,array){
console.log(this); // window
});
// 传两个参数
arr.forEach(function(item,index,array){
console.log(this); // [1, -2, 3, 4, -5]
},arr);
兼容性: 由于以上方法均属ES5方法,所以IE8及其以下浏览器均不兼容。
补充小结:
map():有返回值,可以return出来
forEach():没有返回值
filter():返回一个符合func条件的元素数组(并没有改变原数组)
some():返回一个boolean,判断是否有元素是否符合func条件(有一个就行)(并没有改变原数组)
every():返回一个boolean,判断每个元素是否符合func条件(所有都判断)(并没有改变原数组)
① forEach()无返回值,map()和filter()返回新数组,every()和some()返回布尔值
② 匿名函数中this指向默认为window,可通过传第二参数来更改之
③ 五种遍历方法均为ES5方法
到此这篇关于JS中forEach()、map()、every()、some()和filter()用法的文章就介绍到这了!
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
微信小程序自定义导航的方法 本文实例为大家分享了微信小程序自定义导航的具体代码,供大家参考,具体内容如下 在app.js中获取状态栏信息和胶囊按钮信息 onLaunch() { // 展示本地存储能力 const logs = wx.getStorageSync('logs') || [] logs.unshift(Date.now()) wx.setStorageSync('logs', logs) // 获取系统信息 this.globalData.systemInfo
转换方法:1、利用split()方法将字符串转为字符数组;2、遍历字符数组,利用charCodeAt()和toString()方法将每个字符元素转为二进制值;3、使用join()方法拼接数组元素,转为完整的二进制值即可。
这篇文章主要介绍了一文让你快速了解JavaScript栈,栈全称为堆栈,是一种先进后出的的数据结构,栈中只有两种基本操作,也就是插入和删除,也就是入栈和出栈操作,栈只有一端可以进行入栈和出栈操作,我们将其称为栈顶,另一端称其为栈底
JavaScript是一种前端开发语言,与其他高级语言一样,JavaScript也有new操作符。那么在js中new操作符的作用是什么呢?很多刚接触前端朋友对此都不是很了解,本文详细介绍了js中new操作符的作用,感兴趣的朋友继续往下看吧。
这篇文章主要介绍了node.js通过Sequelize 连接MySQL的方法,本文给大家介绍的非常详细,对大家的学习或工作,具有一定的参考借鉴价值,需要的朋友可以参考下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008