JS Object 遍历详解

一、基础遍历方法

JavaScript 中的 Object 是一种键值对数据结构,使用起来非常灵活。在编程过程中,我们经常需要遍历 Object 以获取其中的值或者进行操作。下面将介绍几种基础的遍历方法。

1. for…in 循环

const person = {
  name: '张三',
  age: 18,
  gender: 'male'
};

for (const key in person) {
  console.log(person[key]);
}

上面代码中,我们使用了 for…in 循环遍历了 person 对象。在循环中,关键字 key 指代 person 对象中的键名,我们可以通过 person[key] 来获取相应键值。

2. Object.keys()

const person = {
  name: '张三',
  age: 18,
  gender: 'male'
};

const keys = Object.keys(person);

console.log(keys); // ['name', 'age', 'gender']

上面代码中,我们使用 Object.keys() 方法来获取 person 对象中的所有键名,并将其存储在 keys 变量中。

3. Object.values()

const person = {
  name: '张三',
  age: 18,
  gender: 'male'
};

const values = Object.values(person);

console.log(values); // ['张三', 18, 'male']

上面代码中,我们使用 Object.values() 方法来获取 person 对象中的所有键值,并将其存储在 values 变量中。

4. Object.entries()

const person = {
  name: '张三',
  age: 18,
  gender: 'male'
};

const entries = Object.entries(person);

console.log(entries);
// [ ['name', '张三'], ['age', 18], ['gender', 'male'] ]

上面代码中,我们使用 Object.entries() 方法来获取 person 对象中的所有键值对,并将其存储在 entries 变量中。

二、深度遍历方法

有时候,我们需要遍历的对象是多层嵌套的,需要使用深度遍历的方式进行。下面介绍几种深度遍历的方法。

1. 递归法

const person = {
  name: '张三',
  age: 18,
  gender: 'male',
  father: {
    name: '张爸爸',
    age: 40,
    gender: 'male'
  }
};

function deepTraversal(obj) {
  for (const key in obj) {
    if (typeof obj[key] === 'object') {
      deepTraversal(obj[key]);
    } else {
      console.log(`${key}: ${obj[key]}`);
    }
  }
}

deepTraversal(person);

上面代码中,我们使用递归法遍历了深度嵌套的 person 对象。在 deepTraversal 函数中,我们首先判断键值类型是否为 object,如果是,继续递归遍历,否则打印键名及其对应的键值。

2. 栈方法

function stackTraversal(obj) {
  const stack = [];
  stack.push(obj);
  
  while(stack.length !== 0) {
    const node = stack.pop();
    if (typeof node === 'object') {
      for (const key in node) {
        stack.push(node[key]);
      }
    } else {
      console.log(node);
    }
  }
}

stackTraversal(person);

上面代码中,我们使用栈方法来遍历深度嵌套的 person 对象。首先,我们将需要遍历的对象推入栈中,然后不断从栈中 pop 出元素。如果该元素是 object 类型,则将其可遍历的子元素推入栈中,否则打印该元素。

三、常见应用场景

Object 遍历在实际编程中非常常见,下面介绍几个常见的应用场景。

1. 解构赋值

const person = {
  name: '张三',
  age: 18,
  gender: 'male'
};

const { name, age } = person;

console.log(name, age); // 张三 18

上面代码中,我们使用解构赋值的方式从 person 对象中获取 name 和 age 两个键值,实现了快速获取特定键值的功能。

2. 复制对象

const person = {
  name: '张三',
  age: 18,
  gender: 'male'
};

const newPerson = {};

for (const key in person) {
  newPerson[key] = person[key];
}

console.log(newPerson); // { "name": "张三", "age": 18, "gender": "male" }

上面代码中,我们通过遍历 person 对象并复制其中的键值对,得到了一个新的对象 newPerson,这可以用于实现对象的复制或者克隆。

3. 数据处理

const persons = [
  { id: 1, name: '张三', age: 18 },
  { id: 2, name: '李四', age: 20 },
  { id: 3, name: '王五', age: 22 }
];

const names = persons.map(person => person.name);

console.log(names); // ['张三', '李四', '王五']

上面代码中,我们使用 map 方法从 persons 数组中提取出 name 属性,得到了一个新数组 names,用于数据处理和转换。

原创文章,作者:HDNBC,如若转载,请注明出处:https://www.506064.com/n/332715.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
HDNBCHDNBC
上一篇 2025-01-24 18:47
下一篇 2025-01-27 13:34

相关推荐

  • JS Proxy(array)用法介绍

    JS Proxy(array)可以说是ES6中非常重要的一个特性,它可以代理一个数组,监听数据变化并进行拦截、处理。在实际开发中,使用Proxy(array)可以方便地实现数据的监…

    编程 2025-04-29
  • Python遍历集合中的元素

    本文将从多个方面详细阐述Python遍历集合中的元素方法。 一、for循环遍历集合 Python中,使用for循环可以遍历集合中的每个元素,代码如下: my_set = {1, 2…

    编程 2025-04-29
  • Python如何遍历字典中的key和value

    本文将详细讲解Python中如何遍历字典中的key和value,包括多种遍历方式以及在遍历过程中的一些应用场景。 一、遍历字典中的key和value 在Python中,字典是一种无…

    编程 2025-04-29
  • 解析js base64并转成unit

    本文将从多个方面详细介绍js中如何解析base64编码并转成unit格式。 一、base64编码解析 在JavaScript中解析base64编码可以使用atob()函数,它会将b…

    编程 2025-04-29
  • Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的解决方法

    本文将解决Node.js使用Body-Parser处理HTTP POST请求时,特殊字符无法返回的问题。同时,给出一些相关示例代码,以帮助读者更好的理解并处理这个问题。 一、问题解…

    编程 2025-04-29
  • t3.js:一个全能的JavaScript动态文本替换工具

    t3.js是一个非常流行的JavaScript动态文本替换工具,它是一个轻量级库,能够很容易地实现文本内容的递增、递减、替换、切换以及其他各种操作。在本文中,我们将从多个方面探讨t…

    编程 2025-04-28
  • 使用PHP foreach遍历有相同属性的值

    本篇文章将介绍如何使用PHP foreach遍历具有相同属性的值,并给出相应的代码示例。 一、基础概念 在讲解如何使用PHP foreach遍历有相同属性的值之前,我们需要先了解几…

    编程 2025-04-28
  • 二叉树非递归先序遍历c语言

    本文将为您详细介绍二叉树的非递归先序遍历算法,同时提供完整的C语言代码示例。通过本文,您将了解到二叉树的先序遍历算法,以及非递归实现的方式。 一、二叉树的先序遍历算法介绍 在介绍二…

    编程 2025-04-28
  • Python如何遍历列表

    在Python编程中,列表是一种常用的数据类型,它允许我们存储多个值。但是,我们如何遍历列表并对其中的每个值进行操作呢? 一、for循环遍历列表 fruits = [‘apple’…

    编程 2025-04-28
  • Python遍历字典删除元素

    本文主要介绍Python中如何遍历字典并删除元素。在实际应用中,遍历字典并删除元素是一种非常常见的操作,但需要注意的是,直接在字典中删除元素可能会改变字典中其他元素的索引顺序,因此…

    编程 2025-04-28

发表回复

登录后才能评论