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

javascriptweb developmentfront end technologyobject oriented programming

问题陈述说要在 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 − 我们需要将对象数组转换为数组对象,因此需要一个声明为空对象的 resultantObject。

步骤 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 方法,在编码环境中逻辑思考并解决上述问题陈述。


相关文章