簡體   English   中英

將具有不同鍵的對象數組轉換為一個對象

[英]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.

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