簡體   English   中英

如何使用 reduce 將對象數組轉換為單個 object?

[英]How to convert an array of objects into a single object using reduce?

我有以下 object 數組。

[
  { claimNumber1: 'R12345', checkNumber1: '' },
  { claimNumber2: 'T1234', checkNumber2: 'abcd' },
  { claimNumber3: 'Z4567', checkNumber3: 'qwer' }
]

使用reduce ,我想將其轉換為以下。

{
    claimNumber1:'R12345',
    checkNumber1:'',
    claimNumber2:'T1234',
    checkNumber2:'',
    claimNumber3:'Z4567',
    checkNumber3:'',

}

我在下面嘗試過,但沒有得到我所期望的。

.reduce((obj, item) =>{
    return {...obj,item}
} ,{});

您應該傳播item object,因為item是 object

 const arr = [ { claimNumber1: "R12345", checkNumber1: "" }, { claimNumber2: "T1234", checkNumber2: "abcd" }, { claimNumber3: "Z4567", checkNumber3: "qwer" }, ]; const result = arr.reduce((obj, item, i) => { return {...obj, ...item, [`checkNumber${i + 1}`]: "" }; }, {}); console.log(result);

差不多好了。 您也只需要spreaditem

.reduce((obj, item) => {
  return {
    ...obj,
    ...item,
  };
}, {});

我認為你應該在減速器中傳播每一個項目。 這是我的代碼。

const res = arr.reduce((prev, item) => {
 return { ...prev, ...item };
}, {});

結果是

{
  claimNumber1: 'R12345',
  checkNumber1: '',
  claimNumber2: 'T1234',
  checkNumber2: 'abcd',
  claimNumber3: 'Z4567',
  checkNumber3: 'qwer'
}

我不確定在這種情況下使用reduce的好處。 一個簡單的循環將是自記錄的,並且更易於閱讀。

 const data = [ { claimNumber1: 'R12345', checkNumber1: '' }, { claimNumber2: 'T1234', checkNumber2: 'abcd' }, { claimNumber3: 'Z4567', checkNumber3: 'qwer' } ]; const out = {}; // For every object in the array for (const obj of data) { // Get an array of its keys and iterate over them for (const key of Object.keys(obj)) { // If it's a claim add that value to the output // object property, otherwise set that property value // to an empty string. if (key.startsWith('claim')) { out[key] = obj[key]; } else { out[key] = ''; } } } console.log(out);

附加文件

暫無
暫無

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

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