[英]How to convert an array of objects into a single object using reduce?
I have the following array of object.我有以下 object 数组。
[
{ claimNumber1: 'R12345', checkNumber1: '' },
{ claimNumber2: 'T1234', checkNumber2: 'abcd' },
{ claimNumber3: 'Z4567', checkNumber3: 'qwer' }
]
Using reduce
, I want to convert this to below.使用
reduce
,我想将其转换为以下。
{
claimNumber1:'R12345',
checkNumber1:'',
claimNumber2:'T1234',
checkNumber2:'',
claimNumber3:'Z4567',
checkNumber3:'',
}
I tried below but didn't get what I expected.我在下面尝试过,但没有得到我所期望的。
.reduce((obj, item) =>{
return {...obj,item}
} ,{});
You should spread the item
object, because item
is an object您应该传播
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);
Almost there.差不多好了。 You just need to
spread
the item
as well.您也只需要
spread
该item
。
.reduce((obj, item) => {
return {
...obj,
...item,
};
}, {});
I think you should spread every item in reducer.我认为你应该在减速器中传播每一个项目。 Here is my code.
这是我的代码。
const res = arr.reduce((prev, item) => {
return { ...prev, ...item };
}, {});
And result is结果是
{
claimNumber1: 'R12345',
checkNumber1: '',
claimNumber2: 'T1234',
checkNumber2: 'abcd',
claimNumber3: 'Z4567',
checkNumber3: 'qwer'
}
I'm not sure of the benefit of using reduce
in this situation.我不确定在这种情况下使用
reduce
的好处。 A simple loop would be self-documenting, and easier to read.一个简单的循环将是自记录的,并且更易于阅读。
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);
Additional documentation附加文件
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.