[英]Convert array of object with different key into one object
我有一個像下面這樣的對象。
{
A: { lists: 2, list: [ [Object], [Object] ] },
B: { lists: 2, list: [ [Object], [Object] ] },
C: { lists: 1, list: [ [Object]] }
}
在我對對象列表結果進行映射后,如下所示
const list = Object.entries(result).map(([k, v]) => ({[k]: v.lists}));
我得到的結果是
[{"A":2},{"B":2},{"C":1}]
但我真正想要的是
{A: 2, B: 2, C: 1}
我怎樣才能做到這一點?
您可以按如下方式使用Array.prototype.reduce
。
const list = Object.entries(result).reduce((acc, [k, v]) => {
acc[k] = v.lists;
return acc;
}, {});
當您映射條目時,將它們更改為[k, v.lists]
,然后使用Object.fromEntries()
轉換為對象:
const result = { A: { lists: 2 }, B: { lists: 2 }, C: { lists: 1 }}; const list = Object.fromEntries(Object.entries(result).map(([k, v]) => [k, v.lists])); console.log(list);
使用 lodash,您可以使用_.mapValues()
將lists
用作屬性值:
const result = { A: { lists: 2 }, B: { lists: 2 }, C: { lists: 1 }}; const list = _.mapValues(result, 'lists'); console.log(list);
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.20/lodash.min.js" integrity="sha512-90vH1Z83AJY9DmlWa8WkjkV79yfS2n2Oxhsi2dZbIv0nC4E6m5AbH8Nh156kkM7JePmqD6tcZsfad1ueoaovww==" crossorigin="anonymous"></script>
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.