JavaScript 中的將物件展平

Anika Tabassum Era 2023年10月12日
  1. 在 JavaScript 中使用 concat() 方法展平物件
  2. 在 JavaScript 中使用 flat() 方法展平物件
  3. 在 JavaScript 中使用使用者定義的函式來展平物件
JavaScript 中的將物件展平

一般來說,扁平化的物件也可以符合巢狀結構,但扁平化的核心動機是得到這種情況不太複雜的形式。主要是為了方便起見,我們需要了解物件遵循的模式。

在以下部分中,我們將考慮解決此問題的 3 種方法。第一種和第二種方法已經是簡化的結構,最多可以簡化一個階段。

在 JavaScript 中使用 concat() 方法展平物件

此示例將使用陣列物件、普通物件和巢狀物件設定物件。我們將藉助 reduce() 方法和 concat() 方法來展平整個物件。

Object.keys() 將返回一個包含所有其他物件的陣列,concat() 將合併這些物件。

var object = {az: 90, 0: [1, 2, 3, 4], x: {a: 'y', b: 'z'}};
result = Object.keys(object).reduce(function(value, key) {
  return value.concat(key, object[key]);
}, []);
console.log(result);

輸出:

使用 concat() 方法來展平物件

所有物件都被展平在一個陣列中,巢狀物件是該合併陣列的成員。在輸出中,你幾乎無法區分先前的鍵值對。

我們分離了鍵並將它們與值連線起來。

在 JavaScript 中使用 flat() 方法展平物件

在這裡,我們將觀察一個類似的物件 take_me,以展平其元件。我們將使用 flat() 方法來展平主物件的各個物件的值。

所以,我們只會得到扁平化版本的值。

const flatten = (obj) => Object.values(obj).flat();
const take_me = {
  x: [1, 2, 3],
  y: [4, 5, 6, 7],
  z: {xx: 8, yy: 9}
};
console.log(flatten(take_me));

輸出:

使用 flat() 方法展平物件

在 JavaScript 中使用使用者定義的函式來展平物件

用於檢索展平物件的使用者定義函式不基於任何內建屬性或方法。一個簡單的條件語句將決定如何在 result 物件中設定鍵對值。

我們將檢查物件的型別,如果它不是陣列,我們將遞迴地執行 flatten 函式。此外,result 物件將採用簡化的鍵值對。

程式碼可以更好地預覽任務。

let obj = {
  Company: 'xyz',
  Address: 'aaa',
  contact: 0987654,
  mentor: {HTML: 'A', CSS: 'B', JavaScript: 'C'},
  abc: [1, 2, 3]
};
const flatten = (ob) => {
  let result = {};
  for (const i in ob) {
    if ((typeof ob[i]) === 'object' && !Array.isArray(ob[i])) {
      const temp = flatten(ob[i]);
      for (const j in temp) {
        result[j] = temp[j];
      }
    } else {
      result[i] = ob[i];
    }
  }
  return result;
};
console.log(flatten(obj));

輸出:

使用 user-defined 函式展平物件

Anika Tabassum Era avatar Anika Tabassum Era avatar

Era is an observer who loves cracking the ambiguos barriers. An AI enthusiast to help others with the drive and develop a stronger community.

LinkedIn Facebook

相關文章 - JavaScript Object