在 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 方法。
数据结构
网络
关系型数据库管理系统
操作系统
Java
iOS
HTML
CSS
Android
Python
C 编程
C++
C#
MongoDB
MySQL
Javascript
PHP