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


问题陈述要求在 JavaScript 中将对象数组完全转换为数组对象,其中对象数组由用户作为输入源给出,并且给定的输入可以成功地完全转换为最终的数组对象。

什么是 JavaScript 中的数组?

如果您熟悉其他编程语言,例如 C、C++ 或 Java,您一定听说过“数组”这个术语。

在编程中,数组是在一个屋檐下收集相似数据元素。

现在,一个重要的问题出现了:如果数组在所有语言中通常都是相同的,那么 JavaScript 如何使数组更具唯一性和可用性?

让我们了解 JavaScript 中数组的整体工作原理。

数组是一个存储多个元素的对象。由于数组也是一个对象,因此它具有一些属性和方法,使在 JavaScript 中更轻松地使用数组。

以下是 JavaScript 中定义数组的语法:−

const arrayExample  = [ 2 , 3 , 5 ,6 ];
console.log(arrayExample);

输出

[2, 3, 5, 6]

什么是 JavaScript 中的对象?

JavaScript 中的对象是键值对的集合,其中键值对称为对象的属性。对象的属性也可以是函数或方法。用户也可以轻松定义自己的自定义对象。

以下是 JavaScript 中定义对象的语法:−

const student = 
{
    name : "Ashish",
    course : "Javascript",
    from : "tutorialspoint",
    display : function(){
        console.log(student.name + " " + "is learning" + " " + student.course + " from " + student.from)
    }
}

student.display()

输出

Ashish is learning Javascript from tutorialspoint

什么是 Javascript 中的对象数组?

数组是有序的数据集合,而对象是无序的数据集合,例如对象表示汽车的属性,对象数组表示所有类型汽车的特定属性。因此,对象数组是在其内部包含多个对象的排序集合。

对象数组的语法如下所示

let studentArray = [
  {
    "name": "priya",
    "course": "JS",
    "from": "tutorialspoint",
    
  },
  {
    "name": "ashish",
    "course": "React",
    "from": "tutorialspoint",
  },
  {
    ...
  },
  ...
]

什么是 Javascript 中的数组对象?

在 JavaScript 中,对象设置现实世界实体的属性,现实世界实体有时也会为某个键值对累积元素数组,从而在 javascript 中形成数组对象的概念,它使对象变得复杂和僵化,并包含大量数据。

数组对象的语法如下所示

let studentObject = 
  {
    "name": "priya",
    "course": ["JS", "React","Python" ,"CSS"],
    "from": "tutorialspoint",
    
  }

console.log(studentObject);

算法

步骤 1 − 声明一个名为 objectToArrayConversion 的函数,该函数以对象数组作为参数。

步骤 2 − 我们需要从对象数组转换为数组对象,为此需要一个名为 resultObject 的结果对象,该对象被声明为空对象。

步骤 3 − 使用 for 循环遍历对象数组,直到其 length 属性,以便可以使用 Object.keys 方法提取对象数组的键。

步骤 4 − 一旦提取出所有键,我们就可以遍历对象数组中存在的键的长度,以便如果 resultObject 使用 JavaScript 中的 hasOwnProperty 方法拥有该特定键,则将 resultObject 中存在的对应键的值对推入其中。

步骤 5 − 如果 resultObject 中不存在该键,则将该特定键值对分配给 resultObject。

步骤 6 − 一旦所有循环都结束,resultObject 将返回所有键值对,并将多个值分配给对象数组的特定键,形成数组的形状。

示例

function objectToArrayConversion(arrayOfObject)
{
    const resultObject = { };
    for(let i =0 ; i<arrayOfObject.length ; i++ )
    {
        const keys = Object.keys(arrayOfObject[i])
        for(let j = 0 ; j<keys.length ; j++)
        {
            if(resultObject.hasOwnProperty(keys[j]))
            {
                 resultObject[keys[j]].push(arrayOfObject[i][keys[j]]);
            }
            else 
            {
                resultObject[keys[j]] = [arrayOfObject[i][keys[j]]];
            }
        }
    }
    return resultObject;
}

let studentArray = [
  {
    "name": "priya",
    "course": "JS",
    "from": "tutorialspoint",
    
  },
  {
    "name": "ashish",
    "course": "React",
    "from": "tutorialspoint",
  }
  ]

  console.log(objectToArrayConversion(studentArray))

关于问题陈述,使用上述算法的特定代码在控制台中如下所示

输出

{
  name: [ 'priya', 'ashish' ],
  course: [ 'JS', 'React' ],
  from: [ 'tutorialspoint', 'tutorialspoint' ]
}

时间和空间复杂度

以下问题陈述使用 JavaScript 方法(如 Object.keys 和 hasOwnProperty 方法)来解决,这些方法在最坏情况下以 O(n) 时间复杂度遍历元素数组。问题陈述的空间复杂度为 O(1)。

结论

这就是我们如何在逻辑上以及在编码上下文中解决上述问题陈述,并充分利用 JavaScript 方法。

更新于: 2023-08-21

381 次查看

启动您的 职业生涯

通过完成课程获得认证

开始
广告

© . All rights reserved.