在 JavaScript 中将对象转换为对象数组

javascriptweb developmentfront end technologyobject oriented programming

在给定的问题陈述中,我们需要借助 JavaScript 功能将对象转换为对象数组。要将对象转换为对象数组,我们可以使用 JavaScript 的内置方法。

什么是 JavaScript 中的数组?

数组是同一屋檐下类似数据元素的集合。因此,让我们了解 JavaScript 中数组的整体工作过程。数组是包含一个或多个元素的对象。因此,它具有一些属性和方法,使在 JavaScript 中使用数组更加容易。

例如

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

console.log(arr);

输出

[2, 4, 6, 8]

什么是 Javascript 中的对象?

在 Javascript 中,对象是具有属性和类型的实体。例如,我们有一辆汽车。汽车是一个对象,它具有一些属性,如颜色、型号、设计和重量等。同样,对象也有一个属性,用于定义其特征。让我们通过以下代码查看对象的示例:

// 对象示例 汽车对象
const carObj = {
  name: "Audi",
  color: "red",
  wheels: 4,
  engine: { cylinders: 4, size: 2.2 }
};

// 显示汽车对象属性的函数
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 个对象。


相关文章