在 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 − 我们需要将对象数组转换为数组对象,因此需要一个声明为空对象的 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 方法,在编码环境中逻辑思考并解决上述问题陈述。