在 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