【发布时间】:2021-04-30 07:46:55
【问题描述】:
我有一个对象数组,我想使用另一个对象数组根据“类型”值修改它们。我得到了一大堆对象,但我应该只得到 2 个。
这就是我所拥有的:
const convertData = (type, value) => {
switch (type) {
case "date":
{
return new Date(Number(value)).toDateString();
}
case "currency":
{
return value ? `$${value}` : null;
}
default:
return value;
}
};
const headers = [{
field: 'amount',
type: 'currency'
}, {
field: 'deliveredDate',
type: 'date'
}]
const body = [{
id: 1,
amount: 4000,
deliveredDate: "1610427600000"
}, {
id: 2,
amount: 6000,
deliveredDate: "1611118800000"
}]
const result = body.map(i => {
const keys = Object.keys(i);
return keys.map(k => {
return {
...i,
[k]: headers.find(i => i.field === k) ? convertData(headers.find(i => i.field === k).type, i[k]) : null
}
})
})
console.log(result.flat())
/**
Expected Result
[{
id: 1,
amount: $4000,
deliveredDate: "Tue Jan 12 2021"
}, {
id: 2,
amount: $6000,
deliveredDate: "Wed Jan 20 2021"
}]
*/
headers 中的字段值表示 body 数组中的键。并且相应的body对象中的值需要根据header对象中的类型进行更改。请指教。
【问题讨论】:
-
请不要这样 ping 用户。
标签: javascript arrays object mapping reduce