JS数组实现内置遍历有几种方法,区别在哪
Admin 2022-06-22 群英技术资讯 707 次浏览
今天这篇给大家分享的知识是“JS数组实现内置遍历有几种方法,区别在哪”,小编觉得挺不错的,对大家学习或是工作可能会有所帮助,对此分享发大家做个参考,希望这篇“JS数组实现内置遍历有几种方法,区别在哪”文章能帮助大家解决问题。forEach()(ES6)方法对数组的每个元素执行一次给定的函数。
1. 数组里的元素个数有几个,该方法里的回调就会执行几次
2. 第一个参数是数组里的元素,第二个参数为数组里元素的索引,第三个参数则是它自己(利用第三个参数可以进行数组去重)
3. 数组自带的遍历方法,foreach在循环次数未知或者计算起来较复杂的情况下效率比for循环高
4. 循环的数组元素是基本数据类型,不会改变原数据的数据,循环的数组元素为对象,会改变原数组的对象属性的值
5. 循环过程中不支持修改索引,回调中使用return不会报错,但是无效
注意:不能使用break和continue跳出整个循环或当前循环的,会报错,但是结合try...catch可以实现跳出循环
const array1 = ['a', 'b', 'c']; array1.forEach(element => console.log(element));
缺点:没有办法中止或跳出 `forEach()` 循环
map()(ES6) 方法创建一个新数组,其结果是该数组中的每个元素是调用一次提供的函数后的返回值。
const array1 = [1, 4, 9, 16];
const map1 = array1.map(x => x * 2);
console.log(map1); //[2, 8, 18, 32]
三个参数:数组元素,元素索引,原数组本身
flatMap()方法首先使用映射函数映射每个元素,然后将结果压缩成一个新数组。它与 map 连着深度值为1的 flat 几乎相同,但 flatMap 通常在合并成一种方法的效率稍微高一些。
var arr1 = [1, 2, [3, 4]];
arr1.flatMap(x => x); //[1, 2, 3, 4]
var arr1 = [1, 2, 3, 4];
arr1.flatMap(x => [[x * 2]]); // [[2], [4], [6], [8]]
这个循环用的人也很多,但是效率最低(输出的 key 是数组索引),如果遍历的是对象,输出的则是对象的属性名
性能要好于 `for..in...`,但仍然比不上普通的 `for` 循环
注意:不能循环对象,因为任何数据结构只要部署 Iterator接口,就可以完成遍历操作,有些数据结构原生具备 Iterator 接口,比如Array、Map、Set、String等,而 Iterator 接口是部署在数据结构的Symbol.iterator属性上的,而对象Object恰恰是没有Symbol.iterator属性的,所以无法被for..of遍历
filter(ES6)遍历数组,过滤出符合条件的元素并返回一个新数组, 如果没有任何数组元素通过测试,则返回空数组。
const result = words.filter(word => word.length > 6);
console.log(result) //["exuberant", "destruction", "present"]
some()函数(ES6)
遍历数组中是否有符合条件的元素,返回值为Boolean值
这个它只要找到一个符合条件的,就返回 true。
var arr = [
{ id: 1, name: '买笔', done: true },
{ id: 2, name: '买笔记本', done: true },
{ id: 3, name: '练字', done: false }
]
var bool = arr.some(function (item, index) {
return item.done
})
console.log(bool) // true
测试数组的各个元素是否通过了回调函数的测试
若都通过,返回 true,否则返回 false
简单的说就是如果回调函数每次返回的值都是 true 的话,则 every() 返回 true,否则为 false。
var arr = [
{ id: 1, name: '买笔', done: true },
{ id: 2, name: '买笔记本', done: true },
{ id: 3, name: '练字', done: false }
]
var bool = arr.every((item, index) => {
return item.done
})
console.log(bool) // false
返回第一个通过测试的元素,如果没有通过测试的元素,则会返回**undefined**。
var arr = [1, 1, 2, 2, 3, 3, 4, 5, 6]
var num = arr.find( (item, index) => {
return item === 3
})
console.log(num) // 3
这个函数与上面的find()作用一样,就是它返回的值为该通过第一个元素的索引。
var arr = [1, 1, 2, 2, 3, 3, 4, 5, 6]
var num = arr.findIndex(item => {
return item === 3
})
console.log(num) // 4
免责声明:本站发布的内容(图片、视频和文字)以原创、转载和分享为主,文章观点不代表本网站立场,如果涉及侵权请联系站长邮箱:mmqy2019@163.com进行举报,并提供相关证据,查实之后,将立刻删除涉嫌侵权内容。
猜你喜欢
目录前言hover 的实现click 的实现矩形的坐标哪来的点在多边形内的其他判断方法穿透本章小结前言上个章节中我们已经给物体加上了被选中的效果,现在可以上点交互了,这个章节主要实现的就是物体的 hover 和 click 事件,当鼠标 hover 到物体上时,我们会改变鼠标的样式使其变成移动的样子;当 hover 到
vue如何实现筛选功能?大家在一些网站或者软件上,应该都见过筛选功能,例如先筛选出符合条件的信息再搜索,这样能够提高搜索的准确度,因此这篇就主要仿写teambition软件的筛选功能,给大家介绍一下筛选功能是如何实现的。
这篇文章主要介绍了React SSR 之限流,React SSR 毕竟涉及到了服务端,有很多服务端特有的问题需要考虑,而限流就是其中之一,本文会通过一个简单的案例来说明,为什么服务端需要进行限流,需要的朋友可以参考下
这篇文章主要介绍ref在hooks中怎样使用的内容,对新手来说,可能对ref不是很了解,不清楚ref是什么意思,因此下文就给大家来详细的介绍一下ref,感兴趣的朋友可以参考下,希望大家阅读完这篇文章能有所收获,接下来小编带着大家一起了解看看。
这篇文章主要介绍了Vue3中的Refs和Ref,文章围绕Vue3中的Refs和Ref得相关资料应用举例烦人方式展开详细内容,需要的朋友可以参考一下
成为群英会员,开启智能安全云计算之旅
立即注册Copyright © QY Network Company Ltd. All Rights Reserved. 2003-2020 群英 版权所有
增值电信经营许可证 : B1.B2-20140078 粤ICP备09006778号 域名注册商资质 粤 D3.1-20240008