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/zh-hant/n/332715.html

(0)
打賞 微信掃一掃 微信掃一掃 支付寶掃一掃 支付寶掃一掃
HDNBC的頭像HDNBC
上一篇 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

發表回復

登錄後才能評論