【发布时间】:2020-06-29 07:01:41
【问题描述】:
我有一个对象。我的每个嵌套对象都有一个作为嵌套数组的价格,其中可能包含负值。 我需要格式化对象并返回一个新的对象,其中子对象只包含正值。
例如, 在下面的代码中,理想情况下,它应该只返回具有“TypeB”对象的对象,因为只有具有非负值的价格。
我试过这个,但我想我错过了一些东西。 另外,我可以改用'reduce'方法来优化它吗?
输入对象:
{
"TypeA": [
{
"price": [
[
{
"amount": -45,
"currency": "USD"
}
]
],
"name": "ABC",
"priceDetails": [
{
"name": "BASE",
"price": [
[
{
"amount": -40.00,
"currency": "USD"
}
]
]
},
{
"name": "TAX",
"price": [
[
{
"amount": -5.00,
"currency": "USD"
}
]
]
}
]
}
],
"TypeB": [
{
"price": [
[
{
"amount": 0,
"currency": "USD"
}
]
],
"name": "ABC",
"priceDetails": [
{
"name": "BASE",
"price": [
[
{
"amount": 0,
"currency": "USD"
}
]
]
}
]
}
]
}
预期输出:
{
"TypeB": [
{
"price": [
[
{
"amount": 0,
"currency": "USD"
}
]
],
"name": "ABC",
"priceDetails": [
{
"name": "BASE",
"price": [
[
{
"amount": 0,
"currency": "USD"
}
]
]
}
]
}
]
}
代码:
const data = {
"TypeA": [{
"price": [
[{
"amount": -45,
"currency": "USD"
}]
],
"name": "ABC",
"priceDetails": [{
"name": "BASE",
"price": [
[{
"amount": -40.00,
"currency": "USD"
}]
]
},
{
"name": "TAX",
"price": [
[{
"amount": -5.00,
"currency": "USD"
}]
]
}
]
}],
"TypeB": [{
"price": [
[{
"amount": 0,
"currency": "USD"
}]
],
"name": "ABC",
"priceDetails": [{
"name": "BASE",
"price": [
[{
"amount": 0,
"currency": "USD"
}]
]
}]
}]
};
const formattedData = Object.values(data).filter(item => {
return item.map(elem => {
const itemPrice = elem.price;
const isPositive = itemPrice[0][0].amount >= 0;
return isPositive ? elem : false;
});
});
console.log(formattedData);
【问题讨论】:
标签: javascript arrays object filter reduce