#javascript #angular #typescript
Вопрос:
Как мы вставляем ключ и значения в существующий массив объектов на основе условия, можно ли это решить с помощью карты ? в одну строчку ? . Спасибо
Если тип сделки с объектом === Реструктуризация PM, вставьте новый ключ и значение, а если тип сделки-Местоположение партнера, удалите ежегодные предложения и ежегодные текущие.
Спасибо за любую идею и помощь.
Денежное вознаграждение : 3000, кассовый поток : 4000,
#данные
this.data.object = [
{
"id": 196,
"name": "Partner Deal ",
"dealType": "Partner Location Submission",
"annualRentProposed": null,
"annualRentCurrent": null,
"firmTermRemaining": null,
"firmTermAdded": null,
"maxAvailableTerm": null,
"capitalContribution": null,
"createdOnString": "09/30/2021",
"fileName": null,
"serverFileName": null,
"size": null,
"absoluteUri": null,
"sentTo": null
},
{
"id": 197,
"name": "Buyout Deal Disposition",
"dealType": "Idle Buyout",
"annualRentProposed": null,
"annualRentCurrent": null,
"firmTermRemaining": null,
"firmTermAdded": null,
"maxAvailableTerm": null,
"capitalContribution": null,
"createdOnString": "09/30/2021",
"fileName": null,
"serverFileName": null,
"size": null,
"absoluteUri": null,
"sentTo": null
},
{
"id": 199,
"name": "Sublease Deal Disposition",
"dealType": "Idle Sublease",
"annualRentProposed": null,
"annualRentCurrent": null,
"firmTermRemaining": null,
"firmTermAdded": null,
"maxAvailableTerm": null,
"capitalContribution": null,
"createdOnString": "09/30/2021",
"fileName": null,
"serverFileName": null,
"size": null,
"absoluteUri": null,
"sentTo": null
},
{
"id": 203,
"name": "Disposition of Location #10532-S",
"dealType": "PM Restructure",
"annualRentProposed": null,
"annualRentCurrent": null,
"firmTermRemaining": null,
"firmTermAdded": null,
"maxAvailableTerm": null,
"capitalContribution": null,
"createdOnString": "10/01/2021",
"fileName": null,
"serverFileName": null,
"size": null,
"absoluteUri": null,
"sentTo": null
},
{
"id": 214,
"name": null,
"dealType": "Approval to Close",
"annualRentProposed": null,
"annualRentCurrent": null,
"firmTermRemaining": null,
"firmTermAdded": null,
"maxAvailableTerm": null,
"capitalContribution": null,
"createdOnString": "10/04/2021",
"fileName": null,
"serverFileName": null,
"size": null,
"absoluteUri": null,
"sentTo": null
},
{
"id": 215,
"name": "pmpm",
"dealType": "PM Restructure",
"annualRentProposed": null,
"annualRentCurrent": null,
"firmTermRemaining": null,
"firmTermAdded": null,
"maxAvailableTerm": null,
"capitalContribution": null,
"createdOnString": "10/05/2021",
"fileName": null,
"serverFileName": null,
"size": null,
"absoluteUri": null,
"sentTo": null
}
]
Ответ №1:
Мы можем использовать Array.map()
, используя простую функцию .map ().
Мы используем оператор switch в dealType, чтобы решить, как сопоставлять каждую сделку.
По умолчанию мы просто оставляем сделку без изменений.
Можно было бы расширить логику, используемую в «Реструктуризации PM», чтобы добавить дополнительные параметры и для других типов сделок.
const input = [ { "id": 196, "name": "Partner Deal ", "dealType": "Partner Location Submission", "annualRentProposed": null, "annualRentCurrent": null, "firmTermRemaining": null, "firmTermAdded": null, "maxAvailableTerm": null, "capitalContribution": null, "createdOnString": "09/30/2021", "fileName": null, "serverFileName": null, "size": null, "absoluteUri": null, "sentTo": null }, { "id": 197, "name": "Buyout Deal Disposition", "dealType": "Idle Buyout", "annualRentProposed": null, "annualRentCurrent": null, "firmTermRemaining": null, "firmTermAdded": null, "maxAvailableTerm": null, "capitalContribution": null, "createdOnString": "09/30/2021", "fileName": null, "serverFileName": null, "size": null, "absoluteUri": null, "sentTo": null }, { "id": 199, "name": "Sublease Deal Disposition", "dealType": "Idle Sublease", "annualRentProposed": null, "annualRentCurrent": null, "firmTermRemaining": null, "firmTermAdded": null, "maxAvailableTerm": null, "capitalContribution": null, "createdOnString": "09/30/2021", "fileName": null, "serverFileName": null, "size": null, "absoluteUri": null, "sentTo": null }, { "id": 203, "name": "Disposition of Location #10532-S", "dealType": "PM Restructure", "annualRentProposed": null, "annualRentCurrent": null, "firmTermRemaining": null, "firmTermAdded": null, "maxAvailableTerm": null, "capitalContribution": null, "createdOnString": "10/01/2021", "fileName": null, "serverFileName": null, "size": null, "absoluteUri": null, "sentTo": null }, { "id": 214, "name": null, "dealType": "Approval to Close", "annualRentProposed": null, "annualRentCurrent": null, "firmTermRemaining": null, "firmTermAdded": null, "maxAvailableTerm": null, "capitalContribution": null, "createdOnString": "10/04/2021", "fileName": null, "serverFileName": null, "size": null, "absoluteUri": null, "sentTo": null }, { "id": 215, "name": "pmpm", "dealType": "PM Restructure", "annualRentProposed": null, "annualRentCurrent": null, "firmTermRemaining": null, "firmTermAdded": null, "maxAvailableTerm": null, "capitalContribution": null, "createdOnString": "10/05/2021", "fileName": null, "serverFileName": null, "size": null, "absoluteUri": null, "sentTo": null } ]
// Function that maps each deal according to the dealType
function mapDeal(deal, parameters) {
switch (deal.dealType) {
case 'PM Restructure':
// Add any extra parameters for PM Restructure
return { ...deal, ...(parameters['PM Restructure'] || {})};
case 'Partner Location Submission':
// Remove annualRentProposed, annualRentCurrent using object destructuring
const { annualRentProposed, annualRentCurrent, ...rest } = deal;
return rest;
default:
// Leave the deal as it is
return deal;
}
}
function mapDeals(input, parameters) {
return input.map(deal => mapDeal(deal, parameters));
}
const parameters = {
'PM Restructure': {
cashContribution: 3000,
storeCashFlow: 4000
}
}
console.log(mapDeals(input, parameters))
.as-console-wrapper { max-height: 100% !important; top: 0; }
Комментарии:
1. Сэр , просто дополнительный вопрос , как мы преобразуем в машинописном виде число в сумму, например, ввод 424109, должно быть 424109 . Спасибо.
2. не в угловом шаблоне, а в коде
3. Возможно, вам захочется взглянуть на формат Intl.NumberFormat: developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/. … Это приведет к форматированию чисел в соответствии с правилами локали.
4. нам все еще нужно учитывать валюту?
5. кроме того, какой раунд мы используем для округления 11.833333 до 11.8