JS 基础篇(七):JS中的遍历函数

JavaScript基础篇:六、 函数基础 函数是 JavaScript 中的基本构建块,是一组为了完成特定任务而封装在一起的语句。函数可以接受输入参数,执行一系列操作,并返回结果。通过使用函数,可以实现代码的复用、模块化编程,使代码结构更加清晰和易于维护。通过本篇教程,深入学习了 JavaScript 中的函数基础,包括函数的定义与声明、参数、返回值、作用域和闭包等核心概念,并通过实际示例展示了它们的应用。函数是 JavaScript 编程的核心构建块,掌握函数的使用对于编写模块化、可维护的代码至关重要。 阅读详情

目录:

在JS中的map()、filter()、forEach()、reduce()函数都是对数组内部的元素进行遍历,但是他们之间有什么区别呢?

一、Array.prototype.map()

1、说明

将数组的所有成员依次传入参数函数,然后把每一次的执行结果组成一个新数组返回。

2、语法

var newArray = arr.map(function callback(currentValue, index, array){ 
    //对每个元素的处理 
}) 

// 参数
// currentValue:当前正在处理的元素 
// index:正在处理元素的索引 
// array:调用map方法的数组(就是.map()前面的,也就是arr)

3、示例

var arr = [1,2,3,4];
var newArr = arr.map(function(x){
    return x = x+1;
});
console.log(newArr , arr);
//newArr:2,3,4,5  
//arr:1,2,3,4

遍历数组中的每一个元素,然后对每一个元素执行函数中的处理,最后将返回值组成一个新的数组返回,原数组(arr)保持不变。

二、Array.prototype.forEach()

1、说明

对数组的所有成员依次执行参数函数。但是,forEach方法不返回值,只用来操作数据。

2、语法

var newArray = arr.forEach(function callback(currentValue, index , array){ 
    //函数代码 
}); 
// 参数 
// currentValue: 当前元素 
// index: 当前元素的索引 
// array:调用forEach的数组

3、示例

var arr = [1,2,3,4];
var newArr = arr.forEach(function(x){
    return x = x+1;
});
console.log(newArr , arr);
//newArr:undefined
//arr:1,2,3,4

遍历数组中的每一个元素,然后对每一个元素执行函数中的处理,没有返回值,即使设置了return也无效,原数组(arr)保持不变。

三、Array.prototype.fliter()

1、说明

过滤数组成员,满足条件的成员组成一个新数组返回。

2、语法

var newArray = arr.filter(function callback(currentValue, index , array){ 
    //函数代码 
}); 
// 参数 
// currentValue: 当前元素 
// index: 当前元素的索引 
// array:调用filter的数组

3、示例

var arr = [1,2,3,4];
var newArr = arr.filter(function(x){
    return x > 1;
});
console.log(newArr , arr);
// newArr:2,3,4
// arr:1,2,3,4

遍历数组中的每一个元素,然后对每一个元素执行函数中的处理,最后判断返回值是否为true,将返回为true的数组元素(该元素为最原始的数组元素)组成一个新的数组返回,原数组(arr)保持不变。

四、Array.prototype.some()与Array.prototype.every()

1、说明

对数组的所有成员依次执行参数函数,返回一个布尔值。
some()是只要一个成员的返回值是true,则整个some()的返回值就是true,否则返回false。
every()是所有成员的返回值都是true,整个every()才返回true,否则返回false。

2、语法

var newArray = arr.some(function callback(currentValue, index , array){ 
    //函数代码 
}); 
// 参数 
// currentValue: 当前元素 
// index: 当前元素的索引 
// array:调用filter的数组

var newArray = arr.every(function callback(currentValue, index , array){ 
    //函数代码 
}); 
// 参数 
// currentValue: 当前元素 
// index: 当前元素的索引 
// array:调用filter的数组

3、示例

// 以some()为例:
var arr = [1,2,3,4];
var newArr = arr.some(function(x){
    return x > 1;
});
console.log(newArr , arr);
// newArr:true
// arr:1,2,3,4

遍历数组中的每一个元素,然后对每一个元素执行函数中的处理,最后判断返回值是否为true,
如果有一个成员返回值为true,则some()返回true,
如果所有成员返回值都为true,则every()返回true,
原数组(arr)保持不变。

五、Array.prototype.reduce()

1、说明

使用函数依次处理数组的每个成员,最终累计为一个值。

2、语法

//语法 
var newArray = arr.reduce(callback(previousValue, currentValue, currentIndex,array){
    //函数代码 
},initialValue); 
//参数 
// previousValue: 上一次调用函数后的返回值,或者是提供的初始值(initialValue) 
// currentValue:当前数组的元素 
// currentIndex:当前数组元素的索引 
// array:调用reduce的数组 
// initialValue:初始值,作为第一次调用callback的第一个参数,也可不写,默认为0;

3、示例

var arr = [1,2,3,4];
var newArr = arr.reduce(function(total, current){
 return total + current;
},100);
console.log(newArr,arr);
// newArr:110
// arr:1,2,3,4

遍历数组中的每一个元素,然后对每一个元素执行函数中的处理,返回值会被记住,并且在遍历下一个元素中可以被调用,最后返回单个结果值,原数组(arr)保持不变。

六、区别总结

以上介绍的这些方法都是依次使用函数处理数组中的每一个成员,但是都有细微的差别,下面将整理各个函数中的差别。

map(): 在处理函数中将返回值组成一个新的数组返回,原数组(arr)保持不变。

forEach(): 没有返回值,即使处理函数中设置了return也无效,原数组(arr)保持不变。

filter(): 判断处理函数中的返回值是否为true,将返回为true的数组元素(该元素为最原始的数组元素)组成一个新的数组返回,原数组(arr)保持不变。

some()与every(): 判断处理函数中的返回值是否为true,如果有一个成员返回值为true,则some()返回true;如果所有成员返回值都为true,则every()返回true,原数组(arr)保持不变。

reduce(): 返回值会被记住,并且在遍历下一个元素中可以被调用,最后返回单个结果值,原数组(arr)保持不变。

参考资料:
.map()和.filter()以及他们的区别
网道-Array
MDN-Array

Node.js开发-第2篇:JavaScript 基础在 Node.js 中的运用 本文介绍了 JavaScript 在 Node.js 中的基础运用,涵盖了基本数据类型、变量声明与作用域、函数的定义与调用、对象与数组的操作等内容。JavaScript 的基本数据类型包括数字、字符串、布尔值、空值、未定义和符号,变量声明方式有 var、let 和 const,分别具有不同的作用域。函数可以通过声明或表达式定义,参数传递分为按值传递和按引用传递,箭头函数提供了简洁的语法。对象和数组的操作包括属性访问、方法调用和遍历,数组提供了 push、pop 等方法以及 for 循环和 forEach 等 阅读详情

相关推荐

深入掌握JavaScript中的二叉树前序遍历方法

在计算机科学中,遍历是一种重要的算法操作,它让我们能够系统地访问数据结构中的每一个元素。对于二叉树而言,前序遍历是一种深度优先搜索(DFS)策略,在遍历过程中,我们首先访问根节点,然后递归地访问左子树,最后递归地访问右子树。这种遍历方式在处理二叉树结构时特别有用,它保证了我们在对节点进行操作时能够从根节点开始,保持对树的控制。

weixin_42593549的博客 913

Redis过期Key删除机制详解

Redis通过惰性删除和定期删除两种策略管理过期Key。惰性删除在访问Key时检查并删除过期Key,节省CPU但可能内存占用;定期删除每秒随机抽样检查并删除过期Key,平衡内存与CPU消耗。此外,当内存不足时,Redis会触发内存淘汰机制,按配置策略释放空间。两种删除策略与内存淘汰机制共同保障Redis内存管理的高效性。

油墨香^-^的博客 2684

SAP WMS开发实战:用BAPI_L_TO_CREATE_MULTIPLE搞定LT01转储单(附完整代码)

本文详细解析了SAP WMS开发中如何利用BAPI_L_TO_CREATE_MULTIPLE函数模块批量创建LT01转储单。文章深入剖析了核心参数、常见错误及实战代码框架,重点强调了源/目标存储类型等关键字段的获取方法,为系统集成与自动化流程开发提供了可靠的解决方案。

view3的博客 561

JS中代理Proxy的简单使用

ES6中Proxy(代理)的概念介绍,get 和 set 的使用

webchang的博客 8985

FusionCompute8.0.0实战指南:从零部署CNA与VRM环境

本文以华为FusionCompute 8.0.0为例,详细介绍了如何利用老旧硬件从零开始部署CNA计算节点与VRM管理节点的完整实战指南。内容涵盖实验环境准备、CNA安装与网络配置、VRM虚拟机部署方案对比,并提供了典型故障排查与性能调优技巧,帮助读者低成本构建可用的虚拟化学习环境。

weixin_29306317的博客 315

Cadence Virtuoso IC617:从零构建传输门与反相器的Schematic设计实战

本文详细介绍了使用Cadence Virtuoso IC617进行传输门与反相器Schematic设计的完整流程,包括环境准备、原理图绘制、Symbol创建、仿真验证及实用技巧。通过分步指导和实战经验分享,帮助初学者快速掌握集成电路设计基础,提升EDA工具应用能力。

weixin_29194693的博客 600

JS代理-Proxy

Proxy 代理 ,在我们访问对象前添加了一层拦截,可以过滤很多操作 let a = new Proxy(target, handler); target: 需要包装的对象,可以是数组、函数、class类、Proxy等 handler: 传入一个对象,对target进行的具体操作 以Proxy的get示例 get let obj = { val: 'aaa' } let proxyO...

block_xu的博客 2427

别慌!Oracle MOS登录页面大变样?5分钟搞定新旧账号登录全流程

本文详细解析Oracle MOS登录页面改版后的新旧账号登录流程,帮助用户快速适应账号体系变革。针对传统MOS账号和OCI账号的不同应用场景,提供5分钟内完成无缝切换的实用指南,包括登录步骤、书签设置和密码管理策略,助力数据库管理用户高效访问Oracle技术支持资源。

weixin_30275415的博客 517

js运用代理实现数组负索引

熟悉Python、Ruby或Perl的同学,可能习惯了数组的负索引,它使得你可以使用负索引来逆向检索数组元素,代码如下所示: 但是我们知道 JS 中并不存在负索引这种用法,今天我们就来模拟一下负索引的实现。 function createNegativeArrayProxy(array){ // 如果传入的参数不是数组,则抛出异常 if(!Array.isArray(array)){ throw new TypeError('Expected an array');

sinat_33255495的博客 2272

AUTOSAR从入门到精通-【自动驾驶】特斯拉全自动驾驶(FSD)

特斯拉全自动驾驶系统(Full-Self Driving,简称FSD)是特斯拉公司开发的高级驾驶辅助系统,旨在通过神经网络技术实现环境感知与车辆控制,在驾驶员监督下完成导航、转向、变道、泊车等操作。‌ 该系统自2021年发布Beta测试版以来持续迭代,最新版本为2025年10月推出的v14版本。‌FSD v14版本基于端到端神经网络架构,取代了传统代码逻辑,通过数百万视频片段训练模型,以模仿人类驾驶决策。‌ 其功能覆盖住宅区街道、城市道路及高速公路,支持交通信号识别、自动变道和环岛通行等场景。

getusushu的博客 571

Dify 第 2 篇 Dify 插件离线安装

Dify是一个支持插件扩展的AI平台,其插件市场提供5种类型插件(模型、工具、Agent策略、扩展、插件包)。由于默认pip安装速度慢,可通过dify-plugin-repackaging工具将插件转换为离线包(使用阿里云镜像加速)。该工具提供两种方式:1)自备Python环境执行脚本;2)使用Docker环境(推荐)。脚本支持从Dify市场或GitHub下载插件,并重新打包为含依赖的离线包,便于通过"本地插件"方式快速安装。

甘蓝的专栏 1265

【JavaScript基础】你真正了解如今的Js数组吗,看这篇就(Go)够了

数组用过很多了,应该是太平常了。在循环♻️的时候,我这么说是不是不太专业呀(有点不太聪明的样子)! 那好,这样说? 在遍历数组时候,甚至想对数组有所操作的(是不是已有内置的方法了?),都可以考虑一下,先别自己写一大坨(我以前就是!!!),特别是在加入了es6语法之后。 熟悉数组的操作是一项基本工,在刷LeetCode的时候,因为对数组不熟悉而不能落实自己的思路,那简直就是,太可惜了!所以学数组,从现在起!!! 不过话说回来,你看了本文也不一定记得全部,一定要多用,多练,多总结!然后多出点BUG(这个

归子莫的博客 3175

第 8 篇:TMC2240 电机正反转实现|DIR 引脚控制 + 代码优化(稳定不抖动)

本文详细介绍了TMC2240电机驱动芯片的正反转实现方法,重点解决方向切换时的抖动和冲击问题。文章首先明确了硬件连接、基础配置和使能状态三个前提条件,然后阐述了DIR引脚电平控制方向的核心原理,提供了STM32的GPIO配置代码。针对方向切换时的电流冲击问题,作者提出了"停止-延迟-切换-启动"的平滑切换逻辑,并给出了包含方向枚举、转速控制和方向切换函数的完整代码实现方案。通过这种优化方法,可以有效避免电机在正反转切换时产生的抖动、冲击声和发热问题,实现稳定的双向控制。文章还提示了后续可

BackCatK Chen的博客 2078

JavaScript——遍历函数

JavaScript中常用的遍历函数1、for循环2、forEach循环3、map函数,遍历数组每个元素,并回调操作,需要返回值,返回值组成新的数组,原数组不变4、filter函数, 过滤通过条件的元素组成一个新数组, 原数组不变5. some函数,遍历数组中是否有符合条件的元素,返回Boolean值6. every函数, 遍历数组中是否每个元素都符合条件, 返回Boolean值 1、for循环 ...

Dream_Lee的博客 5747

ADC实现模数转换Multisim电路仿真——硬件工程师笔记

8位模数转换器(ADC)是将模拟信号转换为8位数字信号的电子器件,具有256级量化能力。其工作原理分为采样、量化和编码三个阶段,关键参数包括分辨率、采样率、精度、线性度和信噪比。常见型号有ADC0804、ADC0808等,广泛应用于数据采集、音频处理、通信系统和消费电子产品中。典型应用时需要配置参考电压、模拟输入和数字输出引脚,并通过仿真实验验证转换效果(如-10V对应输出0,10V对应255)。硬件工程师需掌握其原理和参数选择,相关笔试面试资料可在优快云博客获取。

XU157303764的博客 1509

WINCC7.3破解文件

WINCC7.3硬件够破解文件,有需要的下载!WINCC7.3硬件够破解文件,有需要的下载!

JS 中的 24 种遍历方法全解析:从基础到进阶

本文系统梳理了JavaScript中24种常用遍历方法,涵盖数组、对象及其他数据结构。数组遍历包括基础方法(for循环、forEach、for...of等)和进阶方法(map、filter、find等);对象遍历提供Object.keys()、Object.entries()等多种方式;还介绍了Map/Set等数据结构的遍历技巧。文章最后给出了不同场景下的方法选择建议,如基础遍历优先使用for...of或forEach,需要返回新数组时使用map或filter,对象遍历推荐Object.entries()等

. 1389

大中型超市收银系统(可直接运行)

光步前台收银系统系统功能:商品销售、商品退货、挂单、收银员权限、会员销售、单品取消、整单取消、商品查询、脱机销售、脱机数据上传,基本资料下载,开钱箱、小票打印、收款结算,支持多币种付款方式(现金、储值卡、礼券、微信等),支持多种促销。运行环境:.net 4.0登陆信息用户名:1001 密码:123456内置商品信息,商品编码可输入00001000 - 00010000,测试效果相关功能键F5 结算 F9挂单 F11商品查询 F8退货 Insert单品取消 Del整单取消 F12开钱箱F2 会员 Ctrl+Z退出系统 Home 锁屏 相关源码待公开

JavaScript第 14 篇,JavaScript函数中的arguments(JS函数中的arguments,函数默认参数arguments)

⭐在JavaScript中,arguments是一个类数组对象,它包含了函数调用时传入的所有参数。尽管它看起来像数组,但实际上并不是真正的数组,这意味着它不具有数组的所有方法如.push()、.pop()等。 JS的函数参数和其他的语言有些不同,它并不介意你传进来多少个参数,以及参数的数据类。即使你在定义函数时,只设置了两个形参,那么在调用这个函数时,你给他传递一个、两个,或者是其它四个、五个实参,它都能接收,之所以会这样是因为在函数参数内部是用一个数组来表示的,在函数体内是通过

AI Agent 全栈架构师(AI + GIS + Backend)& 数字芯片系统架构师(FPGA),NorthCity Smile的博客(NcSmile,博主域名:https://ncmile.blog.youkuaiyun.com) 5346

Camera2Demo

在Camera2 的基础上进行封装,使得Camera2一堆初始化逻辑与Activity分离,降低耦合度,完成预览拍照并保存的操作

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

JavaScript基础篇03 数组与函数

JavaScript基础篇04 1 - 数组 1.1 数组的概念 数组是指一组数据的集合,可以把一组相关的数据一起存放,并提供方便的访问(获取)方式。其中的每个数据被称作元素,在数组中可以存放任意类型的元素。 1.2 创建数组 JS 中创建数组有两种方式: 利用 new 创建数组 > var 数组名 = new Array() ; > var arr = ...

weixin_45734686的博客 190

JS中遍历函数each的实现

js中遍历函数操作经常使用到, 遍历就是对数据集合内元素进行某个操作, 因为是对集合内每个元素都进行指定操作, 故称遍历,  数据集合, 我们想到最常用的就是数组; 指定的操作,可以有多样, 最常用的就是利用一个函数来指定所进行的操作; 那么如果以数据集合, 和指定的操作作为某个 [ 即 each ] 函数的参数, 即可对数据集合内每个元素进行指定的操作, 下面看看其实现过程:

boss2967的博客 1408

前端基础入门三大核心之JS篇:JavaScript,不只是咖啡因那么简单!—— 进阶案例集锦篇

恭喜你,现在已经掌握了JavaScript基础语法的核心部分!但这只是冰山一角,JS的世界深邃而广阔,还有更多如异步编程、Promise、async/await、框架与库等待着你去探索。记住,实践是检验真理的唯一标准,不断编码,不断学习,你将逐渐成长为一名真正的前端魔法师。最后,留下一个思考题:在实际项目中,你如何平衡代码的可读性和性能?欢迎在评论区分享你的经验和见解,让我们共同进步!💝💝💝欢迎来到我的博客,很高兴能够在这里和您见面!

一个做过前端开发的产品经理,经历过睿智产品的折磨导致脱发之后,励志要翻身"农奴"把歌唱,一边打入敌人内部一边持续提升自己,为我们广大开发同胞谋福祉,坚决抵制睿智产品折磨我们码农兄弟! 1234

原生JavaScript基础篇再回顾

1.JavaScript简介 1.1 JavaScript是什么 1.JavaScript是世界上最流行的语言之一,是一种运行在客户端的脚本语言 2.脚本语言:不需要编译,运行过程由js引擎逐行来解释并执行 3.现在也可以基于Node.js技术进行服务器编程 1.2 JavaScript的作用 1.表单动态校验(例如密码强度检测)(js最初产生的目的) 2.网页特效 3.服务端开发(Node.js) 4.桌面程序(Electron) 5.App(Cordova) 6.控制硬件-物联网(Ruff) 7.游戏开

JKR10000的博客 863

Javascript学习之路:JS中的遍历跳出循环总结

javascript中的遍历方法有很多,今天,主要总结一下这些遍历方法如何跳出循环,欢迎各位大神和同行们指教和修正😁。

Code_King006的博客 5052

js用递归遍历多维数组_三分钟带你了解js基础语法

JS 基础语法(重点总结)变量变量即一个带名字的用来存储数据的内存空间,数据可以存储到变量中,也可以从变量中取出数变量的声明以及注意点:JavaScript 是一种弱类型语言,在声明变量时不需要指明数据类型,直接用 var 修饰符进行注意:1)若只声明而没有赋值,则该变量的值为undefined2)变量要有定义才能使用,若变量未声明就使用,JavaScript 会报错,告诉你变量未定义3)可以在同...

weixin_39751327的博客 2385

findindex遍历 js_JavaScript 中的遍历

原标题:JavaScript 中的遍历作者:Percyblog.percymong.com/2017/03/14/java-traversal/编程这么多年,要是每次写遍历代码时都用 for 循环,真心感觉对不起 Java 语言~对象遍历为了便于对象遍历的测试,我在下面定义了一个测试对象 obj。测试对象// 为 Object 设置三个自定义属性(可枚举)Object.prototype.user...

weixin_30531997的博客 125
上一篇: jQuery Validation插件问题
madman0621
博客等级 码龄11年 36粉丝 52原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值