[英]Array of array of array to array of objects in javascript
我想将我的对象数组转换为对象数组。
我想将两个数据合并为一个。 我有一个数据持有者,它是一个数组
const dataholder = ["itemCode","item","cashier"];
和一个数据需要dataholder
在数据持有者密钥
const record = [
{
itemCode: { value: 1},
item: { value: 'Pen'},
cashier: {value: 'Sam'}
},
[
itemCode: {value: 2},
item: {value: 'Eraser'},
cashier: {value: 'Kim'}
]
];
我在下面尝试过这段代码,但结果变成了数组数组的数组
record?.map( item => {
return dataholder ?.map( (field) => {
return {
[field]: item[field]?.value
}
})
})
这是 output
[
[
{'itemCode': 1},
{'item': 'Pen'},
{'cashier': 'Sam'}
],
[
{'itemCode': 2},
{'item': 'Eraser'},
{'cashier': 'Kim'}
]
]
预期结果
[
{
itemCode: 1,
item: 'Pen',
cashier: 'Sam'
},
{
itemCode: 2,
item: 'Eraser',
cashier: 'Kim'
}
]
我在这里先向您的帮助表示感谢!
尝试这个:
record?.map(item => {
const obj = {}
for (const key in item)
if (dataholder.includes(key))
obj[key] = item[key].value
return obj
})
您可以.map()覆盖您的record
对象,并为每个 object、map 覆盖您的dataholder
数组,以创建[key, obj[key].value]
arraysZ 的数组。 这将导致您的内部.map()
创建表单的数组...
[[key, value], [key2, value2], ...]
...对于由外部.map()
迭代的每个 object ( obj
),其中值是从obj
获得的。 然后,您可以使用Object.fromEntries()
将此键值对条目数组转换为 object:
const dataholder = ["itemCode","item","cashier"]; const record = [ { itemCode: { value: 1}, item: { value: 'Pen'}, cashier: {value: 'Sam'} }, { itemCode: {value: 2}, item: {value: 'Eraser'}, cashier: {value: 'Kim'} } ]; const res = record.map(obj => Object.fromEntries( dataholder.map(key => [key, obj[key].value]) )); console.log(res);
相反,在内部循环中,您可以使用reduce
const res = record.map((item) => {
return dataholder.reduce((acc, field) => {
return {
...acc,
[field]: item[field].value,
};
}, {});
});
const dataholder = ["itemCode", "item", "cashier"]; const record = [ { itemCode: { value: 1 }, item: { value: "Pen" }, cashier: { value: "Sam" }, }, { itemCode: { value: 2 }, item: { value: "Eraser" }, cashier: { value: "Kim" }, }, ]; const res = record.map((item) => { return dataholder.reduce((acc, field) => { return {...acc, [field]: item[field].value, }; }, {}); }); console.log(res);
您可以尝试这种方式(使用.map
结合for... of
)
var result = record.map(r => {
var item = {};
for(let key of dataholder) item[key] = r[key].value;
return item;
});
var dataholder = ["itemCode","item","cashier"]; var record = [ { itemCode: { value: 1}, item: { value: 'Pen'}, cashier: {value: 'Sam'} }, { itemCode: {value: 2}, item: {value: 'Eraser'}, cashier: {value: 'Kim'} } ]; var result = record.map(r => { var item = {}; for(let key of dataholder) item[key] = r[key].value; return item; }); console.log(result);
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.