当前位置:首页 > 技术分析 > 正文内容

不要再使用for循环遍历集合了,试试JavaScript新增的7种方法吧

ruisui883个月前 (02-03)技术分析14

前端开发小伙伴们,今天介绍除了for循环外的其他几种遍历方法,收藏好了。

除了传统的 for 循环外,ES6 及后续版本引入了一些新的方法,使得遍历更加简洁和高效。以下是 7 种 JavaScript 新增的遍历方法:

1. for...of 循环

  • 特点:用于遍历可迭代对象(如数组、字符串、Map、Set 等)的值。
  • 示例代码
const arr = [1, 2, 3, 4, 5];
for (const value of arr) {
console.log(value); // 输出:1 2 3 4 5
}

2. Array.prototype.forEach()

  • 特点:数组的 forEach 方法可以对数组中的每个元素执行一次提供的函数。
  • 示例代码
const arr = [1, 2, 3, 4, 5];
arr.forEach((value, index) => {
console.log(`Index: ${index}, Value: ${value}`); // 输出每个元素的索引和值
});

3. for...in 循环

  • 特点:用于遍历对象的可枚举属性。
  • 示例代码
const obj = { a: 1, b: 2, c: 3 };
for (const key in obj) {
if (obj.hasOwnProperty(key)) {
console.log(`Key: ${key}, Value: ${obj[key]}`); // 输出对象的键和值
}
}

4. Array.prototype.map()

  • 特点:创建一个新数组,其结果是该数组中的每个元素都调用一次提供的函数后的返回值。
  • 示例代码
const arr = [1, 2, 3, 4, 5];
const squaredArr = arr.map(value => value * value);
console.log(squaredArr); // 输出:[1, 4, 9, 16, 25]

5. Array.prototype.filter()

  • 特点:创建一个新数组,包含通过所提供函数实现的测试的所有元素。
  • 示例代码
const arr = [1, 2, 3, 4, 5];
const evenArr = arr.filter(value => value % 2 === 0);
console.log(evenArr); // 输出:[2, 4]

6. Array.prototype.reduce()

  • 特点:对数组中的所有元素执行一个由你提供的 reducer 函数(升序执行),将其结果汇总为单个返回值。
  • 示例代码
const arr = [1, 2, 3, 4, 5];
const sum = arr.reduce((accumulator, currentValue) => accumulator + currentValue, 0);
console.log(sum); // 输出:15

7. Object.entries() 和 Object.keys() / Object.values()

  • 特点Object.entries() 返回一个给定对象自身可枚举属性的键值对数组。Object.keys() 返回一个由给定对象的自身可枚举属性组成的数组。Object.values() 返回一个给定对象自身可枚举属性的值的数组。
  • 示例代码
const obj = { a: 1, b: 2, c: 3 };

// 使用 Object.entries()
for (const [key, value] of Object.entries(obj)) {
console.log(`Key: ${key}, Value: ${value}`); // 输出对象的键和值
}

// 使用 Object.keys()
for (const key of Object.keys(obj)) {
console.log(`Key: ${key}, Value: ${obj[key]}`); // 输出对象的键和值
}

// 使用 Object.values()
for (const value of Object.values(obj)) {
console.log(`Value: ${value}`); // 输出对象的值
}

创作不易,如果这篇文章对你有用,欢迎点赞关注加评论哦

小伙伴们在工作中还遇到过其他应用场景吗,欢迎评论区留言讨论哦。

扫描二维码推送至手机访问。

版权声明:本文由ruisui88发布,如需转载请注明出处。

本文链接:http://www.ruisui88.com/post/699.html

分享给朋友:

“不要再使用for循环遍历集合了,试试JavaScript新增的7种方法吧” 的相关文章

学会使用Vue JSX,一车老干妈都是你的

作者:子君转发链接:https://mp.weixin.qq.com/s/eAOivpHeowLShfwPfW8-BA?君自前端来,应知前端事。需求时时变,bug改不完。?连续几篇文章,每篇都有女神,被老铁给吐槽了,今天不提了女神了,反正女神都是别人的(扎心了)。这两天小编看了腾讯与老干妈的事情,晚...

快速掌握 Git:程序员必会的版本控制技巧

在现代软件开发中,版本控制系统(VCS)是开发人员不可或缺的工具。无论是个人项目,还是多人协作的团队开发,良好的版本控制都能确保代码管理的高效性与稳定性。而在版本控制系统中,Git 凭借其分布式、灵活性和高效性,成为了最流行的工具之一。几乎所有的开发团队都在使用 Git 来管理代码版本、协作开发和追...

美国民众负债累累 但今年假期消费者支出仍将创下新高

智通财经APP获悉,在迎接假期之际,许多美国人已经背负了创纪录的信用卡债务。然而,今年假期消费者支出仍将创下新高。根据美国零售联合会(NRF)上周发布的报告,预计今年11月1日至12月31日期间的消费总额将达到创纪录的9795亿至9890亿美元之间。NRF首席经济学家Jack Kleinhenz表示...

USB电池充电基础:应急指南

USB为便携设备供电与其串行通信功能一样,已经成为一种标准应用。如今,USB 供电已经扩展到电池充电、交流适配器及其它供电形式的应用。应用的普及带来的一个显著效果是便携设备的充电和供电可以互换插头和适配器。因此,相对于过去每种装置都采用专用适配器的架构相比,目前的解决方案允许采用多种电源进行充电。毋...

Vue2的16种传参通信方式

前言先直入主题列出有哪些传参方式,下面再通过事例一一讲解。props(父传子)$emit与v-on (子传父)EventBus (兄弟传参).sync与update: (父子双向)v-model (父子双向)ref$children与$parent$attrs与$listeners (爷孙双向)pr...

vue3使用vue-router路由(路由懒加载、路由传参)

vue-router 是 vue的一个插件库1. 专门用来实现一个SPA单页面应用2 .基于vue的项目基本都会用到此库SPA的理解1) 单页Web应用(single page web application,SPA)2) 整个应用只有一个完整的页面3) 点击页面中的链接不会刷新页面, 本身也不会向...