簡體   English   中英

將 javascript object 轉換為單個對象的數組

[英]Convert javascript object to array of individual objects

我有以下 object:

{English: 4, Math: 5, CompSci: 6}

如何將其轉換為對象數組,例如:

[{English: 4}, {Math: 5}, {CompSci: 6}]

無法在任何地方找到答案。 謝謝!!

Object.keys(YOUR_OBJECT)使用Array#forEach

 var input = { English: 4, Math: 5, CompSci: 6 }; var op = []; Object.keys(input).forEach(function(key) { var obj = {}; obj[key] = input[key]; op.push(obj); //push newly created object in `op`array }); console.log(op); 

使用更新的JS,您可以采用Object.entries並映射單個屬性。

 var object = { English: 4, Math: 5, CompSci: 6 }, array = Object.entries(object).map(([k, v]) => ({ [k]: v })); console.log(array); 

只需遍歷對象中的每個鍵。

 var oldObject = {English: 4, Math: 5, CompSci: 6}; var newArray = []; // Loop over each key in the object for (var key in oldObject) { // Create a temp object var temp = {}; // Set the key of temp temp[key] = oldObject[key] // Push it to the array newArray.push(temp); } console.log(newArray) 

您可以直接通過{}分配對象,但必須使用[]引號作為鍵值,否則將不起作用

 var obj = {English: 4, Math: 5, CompSci: 6};
 var n_obj = [];
 for(var i in obj){
    n_obj.push({[i]:obj[i]});
 }
 console.log(n_obj);

您可以使用Object.entries將 object 轉換為鍵值對數組,然后將 map 這個數組轉換為使用Object.fromEntries從每個單獨的鍵值對創建的更小的 object(這里的關鍵部分是在傳遞之前包裝在另一個數組中從fromEntries ):

Object.entries(obj).map(e => Object.fromEntries([e]))

反向方法類似:我們使用Object.fromEntries ,然后傳入一個鍵值對數組。 這個數組是通過平面映射(即消除額外的數組層)對象數組到我們通過調用Object.entries在每個小 object 上獲得的鍵值對數組創建的。這里的關鍵是平面映射,沒有它,我們將得到一個 arrays 的鍵值對數組,因為我們在另一個轉換中添加了額外的層來分隔屬性。

Object.fromEntries(arr.flatMap(o => Object.entries(o)))

您可以將JSON.stringify()String.prototype.match()RegExp /".*"\\:.*(?=,|})/ ,將String.prototype.split()RegExp /,/Array.prototype.join()與參數"},{"JSON.parse()

 var obj = {English: 4, Math: 5, CompSci: 6}; var res = JSON.parse("[{" + JSON.stringify(obj) .match(/".*"\\:.*(?=,|})/g)[0] .split(/,/) .join("},{") + "}]"); console.log(res); 

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM