js数组操作的for,forEach,for in,for of等区别

数组操作是我们使用后端数据必不可少的知识

无论是json、数据库还是后台的nodejs,vue都需要我们熟练的操作数组等。


数组操作的区别

 1、forEach:
  1、不能遍历对象
  2、不支持break,支持return
 2、for in:
1、可以遍历数组和对象

  2、会把序列转换为字符串

                3、支持break跳出循环,不支持return

 3、for of:
  1、只能遍历数组,不能遍历对象
  2、支持return



常规for遍历

1、可以清晰看出运行流程

2、可以通过break跳出循环遍历,不支持return

3、可以遍历对象

var arr = [1,2,3,4,5] ;
var num = 3 ;
for(let i = 0;i<arr.length;i++){
	if(i==num){        //当i=3,即第4次时,跳出循环,不再执行后面的循环
	    break;
	};
	console.log(arr[i]);
};


forEach遍历

forEach()是数组的一个方法(把数组当成对象看)

forEach(回调函数) 回调函数填写function(item多个数组参数,index多个序号,arr数组本身){遍历进行的行为}

一般不需要用到index序列,arr数组本身

1、声明式编程,不关心如何实现,不知道运行流程,不知道原理,就可以直接用

2、不支持break的使用,支持return

3、不能遍历对象,这个.forEach()方法是数组的方法,不能用于对象 obj.forEach()不存在,可以自己封装

运行示例:

与普通循环一样,循环数组length次

var arr = [1,2,3,4,5,] ;
arr.forEach(function(item,index){
	console.log(item);
});

测试break和return结果:

break:

var arr = [1,2,3,4,5] ;
var num = 3 ;
arr.forEach(function(item,index){
	if(index==num){
		break;    //forEach不支持break跳出循环,会报错
	};
	console.log(item);
})

return:

var arr=[1,2,3,4,5];
var num = 3 ;
arr.forEach(function(item,index){
	if(index==num){
		return;    //当执行到return 可跳出当前循环,执行下一次循环
                           //无法使用return操作输出值,只能用于控制跳出当前循环
	};
	console.log(item);
})


遍历对象:
var obj = {name:'kingan',age:'20'};
obj.forEach(function(item,index){        //.forEach()方法不能用于对象
	console.log(item);
})


for in 遍历

for in是原生js里的一种循环语法,并不是数组的方法

输出的不是数组参数而是数组参数的序列(字符串类型)

可以遍历对象

缺点:把数组内的参数变成字符串类型

少用,因为并不是我们需要使用的值

for in 示例
var arr = [1,2,3,4,5] ;
for(let key in arr){
	console.log(key);            //key是数组参数的序列
	console.log(typeof key);    //输出多个数组参数序列 会发现是字符string类型
}

测试break结果
for(let key in arr){
	if(key==num){
		break;        //当符合if条件时,跳出循环
	};
	console.log(key);
	console.log(typeof key);
}

遍历对象:
var obj={name:'kingan',age:'20'}
for(let key in obj){
	console.log(key,obj[key]);        //key是对象属性名,obj.key对象属性值,这里用obj[key]连接符
}


for of 遍历

支持return,能中途停止遍历

不能遍历对象

for of 示例
var arr = [1,2,3,4,5] ;           //for of不能遍历对象
var num = 3;
for(let val of arr){
	console.log(val);        //val是数组内的参数
	console.log(typeof val); //for of不会把数组参数变成字符串类型
}


测试break结果
var arr = [1,2,3,4,5] ;
var num = 3;
for(let val of arr){
        if(val==num){
		break;            //支持break跳出循环,当符合if跳出循环;不支持return会报错
	};
	console.log(val);        //val是数组内的参数
	console.log(typeof val); //for of不会把数组参数变成字符串类型
}

遍历对象:
var obj = {name:'kingan',age:'20'};
for(let val of obj){
	console.log(val);    //for of这个循环语法不能遍历对象
}



如有建议和疑问可联系 
QQ:1017386624 
邮箱:1017386624@qq.com

Node.js 是一个开源与跨平台的 JavaScript 运行时环境。 它是一个可用于几乎任何项目的流行工具!   Node.js 在浏览器外运行 V8 JavaScript 引擎(Google Chrome 的内核)。 这使 Node.js 表现得非常出色。   Node.js 应用程序运行于单个进程中,无需为每个请求创建新的线程。 Node.js 在其标准库中提供了一组异步的 I/O 原生功能(用以防止 JavaScript 代码被阻塞),并且 Node.js 中的库通常是使用非阻塞的范式编写的(从而使阻塞行为成为例外而不是规范)。   当 Node.js 执行 I/O 操作时(例如从网络读取、访问数据库或文件系统),Node.js 会在响应返回时恢复操作,而不是阻塞线程并浪费 CPU 循环等待。   这使 Node.js 可以在一台服务器上处理数千个并发连接,而无需引入管理线程并发的负担(这可能是重大 bug 的来源)。   Node.js 具有独特的优势,因为为浏览器编写 JavaScript 的数百万前端开发者现在除了客户端代码之外还可以编写服务器端代码,而无需学习完全不同的语言。   在 Node.js 中,可以毫无问题地使用新的 ECMAScript 标准,因为不必等待所有用户更新其浏览器,你可以通过更改 Node.js 版本来决定要使用的 ECMAScript 版本,并且还可以通过运行带有标志的 Node.js 来启用特定的实验中的特性。   大量的库 npm 的简单结构有助于 Node.js 生态系统的激增,现在 npm 仓库托管了超过 1,000,000 个可以自由使用的开源库包。   Node.js 应用程序的示例 Node.js zui常见的 Hello World 示例是 Web 服务器:   const http = require('http')const hostname = '127.0.0.1'const port = 3000const server = http.createServer((req, res) => )server.listen(port, hostname, () => ) 此代码首先引入了 Node.js http 模块。   Node.js 具有出色的标准库,包括对网络的一.流支持。   http 的 createServer() 方法会创建新的 HTTP 服务器并返回它。   服务器被设置为监听指定的端口和主机名。 当服务器就绪后,回调函数会被调用,在此示例中会通知我们服务器正在运行。   每当接收到新的请求时,request 事件会被调用,并提供两个对象:一个请求(http.IncomingMessage 对象)和一个响应(http.ServerResponse 对象)。   这两个对象对于处理 HTTP 调用至关重要。   第一个对象提供了请求的详细信息。 在这个简单的示例中没有使用它,但是你可以访问请求头和请求数据。   第二个对象用于返回数据给调用方。   在此示例中:   res.statusCode = 200 设置 statusCode 属性为 200,以表明响应成功。   设置 Content-Type 响应头:   res.setHeader('Content-Type', 'text/plain') 关闭响应,添加内容作为 end() 的参数:   res.end('你好世界n') Node.js 框架和工具 Node.js 是一个底层的平台。 为了使开发者做事变得容易又来劲,社区在 Node.js 上构建了数千个库。   久而久之,其中许多已成为受欢迎的选择。 以下是一些值得学习的清单:   AdonisJs: 一个全栈框架,高度专注于开发者的效率、稳定和信任。 Adonis 是zui快的 Node.js Web 框架之一。   Express: 提供了创建 Web 服务器的zui简单但功能zui强大的方法之一。 它的极简主义方法,专注于服务器的核心功能,是其成功的关键。   Fastify: 一个 Web 框架,高度专注于提供zui佳的开发者体验(以zui少的开销和强大的插件架构)。 Fastify 是zui快的 Node.js Web 框架之一。   Gatsby: 一个基于 React、由 GraphQL 驱动的静态网站生成器,具有非常丰富的插件和启动器生态系统。   hapi: 一个富框架,用于构建应用程序和服务,使开发者可以专注于编写可重用的应用程序逻辑,而不必花费时间来搭建基础架构。   koa: 由 Express 背后的同一个团队构建,旨在变得更简单更轻巧。 新项目的诞生是为了满足创建不兼容的更改而又不破坏现有社区。   Loopback.io: 使构建需要复杂集成的现代应用程序变得容易。   Meteor: 一个强大的全栈框架,以同构的方式使用 JavaScript 构建应用(在客户端和服务器上共享代码)。 曾经是提供所有功能的现成工具,现在可以与前端库 React,Vue 和 Angular 集成。 也可以用于创建移动应用。   Micro: 提供了一个非常轻量级的服务器,用于创建异步的 HTTP 微服务。   NestJS: 一个基于 TypeScript 的渐进式 Node.js 框架,用于构建企业级的高效、可靠和可扩展的服务器端应用程序。   Next.js: 一个 React 框架,可为你提供生产所需的所有功能的zui佳开发者体验:混合静态和服务器渲染、TypeScript 支持、智能捆绑、路由预取等。   Nx: 使用 NestJS、Express、React、Angular 等进行全栈开发的工具包! Nx 有助于将开发工作从一个团队(构建一个应用程序)扩展到多个团队(在多个应用程序上进行协作)!   Sapper: Sapper 是一个用于构建各种规模的 Web 应用程序的框架,具有出色的开发体验和灵活的基于文件系统的路由。还提供 S.S.R等!   Socket.io: 一个实时通信引擎,用于构建网络应用程序。   Strapi: Strapi 是一个灵活的开源 Headless CMS,可使开发者可以自由选择自己喜欢的工具和框架,同时还允许编辑人员轻松地管理和分发其内容。 通过使管理面板和 API 可以通过插件系统进行扩展,Strapi 使全球zui大的公司能够加速内容交付,同时构建优美的数字体验。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值