[英]Transform an object into an array of single key/value objects
我有這個變量:
let json1 =
{'aaa': {'cus1':1,'cus2':2},
'bbb': {'cus3':1,'cus4':5}
}
我想將其轉換為以下數組:
[{'aaa': {'cus1':1,'cus2':2}},
{'bbb': {'cus3':1,'cus4':5}}
]
我試圖做的是:
let arr = [];
let keys = Object.keys(json1);
keys.reduce((acc, key) => {
acc.push({key: json1[key]});
return acc;
}, arr);
當我得到:
[ { key: { cus1: 1, cus2: 2 } }, { key: { cus3: 1, cus4: 5 } } ]
所以顯然我想使用真正的密鑰而不是key
作為我在arr中封裝的json的密鑰。
PS有沒有辦法在不使用for循環的情況下做到這一點?
你的問題在這里:
acc.push({key: json1[key]});
// ^
// here
在這種情況下, key
實際上是屬性的名稱。 但是,您正在尋找的是評估key
作為您的屬性的名稱(又名計算的屬性名稱):
acc.push({[key]: json1[key]});
// ^
// now your property name is whatever `key` value is
一個簡單的例子:
var key = '🌯';
var obj = {[key]: true};
obj;
//=> { "🌯": true }
現在回答你的問題:
const split =
obj =>
Object.entries(obj)
.map(([k, v]) =>
({[k]: v}));
split({ aaa: {cus1: 1, cus2: 2}
, bbb: {cus3: 1, cus4: 5}
});
//=> [ { aaa: {cus1: 1, cus2: 2} }
//=> , { bbb: {cus3: 1, cus4: 5} }
//=> ]
您可以使用給定的鍵將分離的鍵/值對帶到新的 object 中。
const data = { aaa: { cus1: 1, cus2: 2 }, bbb: { cus3: 1, cus4: 5 } }, array = Object.entries(data).map(([k, v]) => ({ [k]: v })); console.log(array);
.as-console-wrapper { max-height: 100%;important: top; 0; }
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.