首页 > 其他分享 >JS基本遍历方法

JS基本遍历方法

时间:2023-09-07 23:34:22浏览次数:31  
标签:... 遍历 const log console JS obj 方法

for

这大概是应用最广的循环语句了吧,简单实用,且大多数时候性能还是在线的,唯一的缺点大概就是太普通,没有特色,导致很多人现在不愿用它。

const array = [4, 7, 9, 2, 6];
for (const index = 0; index < array.length; index++) {
    const element = array[index];
    console.log(element);
}
// 4, 7, 9, 2, 6

for...in

for...in 语句可以以任意顺序遍历一个对象的除 Symbol 以外的可枚举属性。

const temp = {name: "temp"};
function Apple() {
    this.color = 'red';
}

Apple.prototype = temp;

const obj = new Apple();

for (const prop in obj) {
    console.log(`obj.${ prop } = ${ obj[prop] }`);
}

// obj.color = red
// obj.name = temp

如果你只要考虑对象本身的属性,而不是它的原型,那么使用 getOwnPropertyNames() 或执行 hasOwnProperty() 来确定某属性是否是对象本身的属性。

const temp = {name: "temp"};
function Apple() {
    this.color = 'red';
}

Apple.prototype = temp;

const obj = new Apple();

for (const prop in obj) {
    if (obj.hasOwnProperty(prop)) {
        console.log(`obj.${ prop } = ${ obj[prop] }`);
    }
}

// obj.color = red

当然,也可以用来遍历数组。

const arr = [1, 2, 3, 4, 5];
for (const key in arr) {
    console.log(key)
}
// 0,1,2,3,4

使用 for...in 可以遍历数组,但是会存在以下问题:

  1. index 索引为字符串型数字(注意,非数字),不能直接进行几何运算。

  2. 遍历顺序有可能不是按照实际数组的内部顺序(可能按照随机顺序)。

所以一般不建议使用 for...in 来遍历数组。

for...of

for...of 语句在可迭代对象(包括 Array,Map,Set,String,TypedArray,arguments 对象等等)上创建一个迭代循环,调用自定义迭代钩子,并为每个不同属性的值执行语句。

const array = ['a', 'b', 'c'];
for (const element of array) {
    console.log(element);
}

// a
// b
// c

for...offor...in 的区别:

  • for...in 语句以任意顺序迭代对象的可枚举属性

  • for...of 语句遍历可迭代对象定义要迭代的数据

Object.prototype.objCustom = function () { };
Array.prototype.arrCustom = function () { };

let iterable = [3, 5, 7];
iterable.foo = 'hello';

for (const key in iterable) {
    console.log(key); // logs 0, 1, 2, "foo", "arrCustom", "objCustom"
}
// 0, 1, 2, "foo", "arrCustom", "objCustom"

for (const key of iterable) {
    console.log(key);
}
// 3, 5, 7

使用 for...of 遍历 Map 结构:

let nodes = new Map();
nodes.set("node1", "t1")
    .set("node2", "t2")
    .set("node3", "t3");

for (const [node, content] of nodes) {
    console.log(node, content);
}
// node1 t1
// node2 t2
// node3 t3

可以看出,使用 for...of 遍历 Map 结构还是挺方便的,推荐使用!

总结

  1. 如果普通 for 循环用腻了,推荐使用 for...of 来替代。
  2. 这三种循环都可以使用 break 关键字来终止循环,也可以使用 continue 关键字来跳过本次循环。
  3. for...of 循环的适用范围最大。

标签:...,遍历,const,log,console,JS,obj,方法
From: https://blog.51cto.com/bianchengsanmei/7402781

相关文章

  • 那些大家都知道的js加密技术
    引言:随着现代网络应用的迅速发展,数据安全成为了一项至关重要的任务。JavaScript作为前端开发的主要语言之一,在保护用户数据和隐私方面扮演了重要的角色。本文将介绍JavaScript中常用的加密和解密技术栈,探讨它们的优缺点,并提供代码案例来帮助您更好地理解这些技术。一些常用的基础......
  • 画面バリアント設定方法
    会計伝票画面バリアントの登録(T-cd:SHD0)会計伝票の登録トランザクション(FB50など)のプルダウンメニューより、追加>編集>画面バリアント>”画面バリアントの登録”でも登録可能1.画面バリアントを登録するトランザクションコードを入力(FB50,FB60,FB70などenjoyトランザクションで......
  • VueJS 处理表单组件上 api 调用的错误
    问题出在可组合项中对errors的处理上。在register函数中,你将errors重新赋值为空对象{},而应该将其赋值给errors.value来保持响应式。修改useAuth可组合项的代码如下:exportdefaultfunctionuseAuth(){leterrors=ref({});constregister=(request)=>{errors.val......
  • Tomcat_PUT方法任意写文件(CVE-2017-12615)
    目录Tomcat_PUT方法任意写文件(CVE-2017-12615)1.1、漏洞描述1.2、漏洞等级1.3、影响版本1.4、漏洞复现1、基础环境2、漏洞扫描3、漏洞验证工具扫描验证POC1.6、修复建议Tomcat_PUT方法任意写文件(CVE-2017-12615)说明内容漏洞编号CVE-2017-12615漏洞名称Tomcat_P......
  • Pandas库在Anaconda中的部署方法
      本文介绍在Anaconda环境中,安装Python语言pandas模块的方法。  pandas模块是一个基于NumPy的开源数据分析库,提供了快速、灵活、易用的数据结构和数据分析工具。它的主要数据结构是Series和DataFrame,可以处理各种数据格式,如CSV、Excel、SQL数据库等,并且支持数据清洗、缺失值处......
  • 【JS】实现 MaxQueue
    classMaxQueue{constructor(){this.queue=[]this.max=[]}enqueue(el){this.queue.push(el)while(this.max.length&&this.max[this.max.length-1]<el){this.max.pop()}......
  • uniapp项目实践总结(十二)封装通用请求上传以及下载方法
    导语:在日常开发过程中,前端经常要和后端进行接口联调,获取并且渲染数据到页面中,接下来就总结一下uniapp中获取请求、文件下载和上传的一些方法。目录原理分析方法实现实战演练案例展示原理分析主要是使用uni.request方法来发送请求,uni.downloadFile方法来下载文件,uni.u......
  • 三大工厂模式 简单工厂模式,工厂方法模式,抽象工厂模式 手撕代码
    1.简单工厂模式#include<bits/stdc++.h>usingnamespacestd;classproduce{private:intwidth;intheight;public:produce(intwidth,intheight):width(width),height(height){}virtual~produce(){}};classA:publicproduce{public......
  • Vue中数组操作方法有哪些?
    在Vue中,有一些数组操作方法是专门为了处理响应式数组而提供的。这些方法会触发Vue的响应式更新机制,确保视图能够正确地响应数组的变化。以下是Vue提供的数组操作方法:1:push():向数组末尾添加一个或多个元素,并返回新的长度。this.array.push('newitem');2:pop():移除数组的最后一......
  • Vue的数组操作方法和JavaScript原生数组方法有什么区别?
    Vue的数组操作方法和JavaScript原生数组方法之间存在一些区别,主要体现在对响应式更新的处理上。#####1:响应式更新:Vue数组操作方法是对JavaScript原生数组方法的封装,能够触发Vue的响应式更新机制。这意味着当你使用Vue的数组操作方法修改数组时,Vue会自动检测到数组的变化......