在 JavaScript 中將物件轉換為物件陣列


在給定的問題陳述中,我們需要藉助 JavaScript 功能將物件轉換為物件陣列。為了執行將物件轉換為物件陣列的轉換,我們可以使用 JavaScript 的內建方法。

什麼是 JavaScript 中的陣列?

陣列是在一個屋簷下收集相似資料元素的集合。因此,讓我們瞭解 JavaScript 中陣列的整體工作流程。陣列是一個包含一個或多個元素的物件。因此,它具有一些屬性和方法,使在 JavaScript 中更輕鬆地使用陣列。

例如

const arr = [2, 4, 6, 8];

console.log(arr);

輸出

[2, 4, 6, 8]

什麼是 JavaScript 中的物件?

在 JavaScript 中,物件是一個具有屬性及其型別的實體。例如,我們有一輛汽車。汽車是一個物件,它具有一些屬性,例如顏色、型號、設計和重量等。類似地,物件具有用於定義其特徵的屬性。讓我們看看下面程式碼中物件的示例

// Object example car object
const carObj = {
  name: "Audi",
  color: "red",
  wheels: 4,
  engine: { cylinders: 4, size: 2.2 }
};

// Function to display properties of car object
function display() {
  console.log("My car's name is " + carObj.name + " and it is " + carObj.color + " with " + carObj.wheels + " wheels.");
}

display()

輸出

My car's name is Audi and it is red with 4 wheels.

什麼是 JavaScript 中的物件陣列?

正如我們上面所看到的,陣列是相似型別資料的集合,而物件陣列是一個包含物件作為其資料的陣列。例如,我們有一個名為 employees 的物件陣列,它具有一些屬性,例如名稱、職位和來自。

const employees = [
  {
    "name": "Alok",
    "designation": "Software developer",
    "from": "Pune",
   
  },
  {
    "name": "Ashish",
    "designation": "Content developer",
    "from": "Mumbai",
   
  },
  {
    ...
  },
  …]

如何轉換物件陣列?

在 JavaScript 中,我們需要藉助 map、filter 和 reduce 等陣列方法來執行將物件轉換為物件陣列的轉換。或者,我們可以使用這些方法的組合來建立一個新的物件陣列,其中包含來自現有陣列的所需屬性或值。例如,如果我們有多種元素來處理具有名稱、成本和類別的專案。

上述問題的邏輯

實現上述問題的最簡單方法是使用 JavaScript 的預定義方法。

因此,讓我們瞭解給定問題的邏輯。為了將物件轉換為物件陣列,我們將使用一個名為 objPerson 的陣列,其中包含一些屬性。現在,在定義陣列之後,我們需要迭代物件的全部屬性,並且在此過程中,我們將使用 forEach 方法,然後我們將組合重複的名稱並組合它們的屬性以減小陣列的大小。執行此操作後,我們將把新的物件陣列推送到 arrayOfObject 中。

示例

const objPerson = {
  "Amit_Age": 32,
  "Amit_Height": 174,
  "Amit_Weight": 66,
  "Yogesh_Age": 29,
  "Yogesh_Height": 169,
  "Yogesh_Weight": 59
};
const arrayOfObject = (objPerson = {}) => {
  const res = [];
  Object.keys(objPerson).forEach(el => {
     const part = el.split('_');
     const person = part[0];
     const info = part[1].toLowerCase();
     if(!this[person]){
        this[person] = {
           "name": person
        };
        res.push(this[person]);
     }
     this[person][info] = objPerson[el];
  }, {});
  return res;
};
console.log(arrayOfObject(objPerson));

輸出

[
  { name: 'Amit', age: 32, height: 174, weight: 66 },
  { name: 'Yogesh', age: 29, height: 169, weight: 59 }
]

複雜度

以下問題陳述使用 JavaScript 方法(如 Object.keys 和 push 方法)來解決,這些方法遍歷陣列中的元素,最壞情況下的時間複雜度為 O(n)。問題陳述的空間複雜度為 O(n),因為它儲存了 n 個物件。

結論

以下問題陳述使用 JavaScript 方法(如 Object.keys 和 push 方法)來解決,這些方法遍歷陣列中的元素,最壞情況下的時間複雜度為 O(n)。問題陳述的空間複雜度為 O(n),因為它儲存了 n 個物件。

更新於: 2023 年 8 月 22 日

468 次瀏覽

啟動您的 職業生涯

透過完成課程獲得認證

開始
廣告

© . All rights reserved.