У меня есть объект объектов. Каждый из моих вложенных объектов имеет цену как вложенный массив, который может содержать отрицательные значения. Мне нужно отформатировать объект и вернуть новый с дочерними объектами, содержащими только положительные значения.
Например, в приведенном ниже коде, в идеале, он должен возвращать только объект с объектом TypeB, поскольку только тот, который имеет цена с неотрицательными значениями.
Я пробовал это, но я думаю, что-то упустил. Кроме того, можно ли оптимизировать это, используя метод «уменьшить» вместо этого?
Входной объект:
{
"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);