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方法的最有效使用情况。