#javascript #angular
#javascript #угловой
Вопрос:
У меня есть массив банковских счетов, которые я получаю из запроса GET.
<div class="card" *ngFor="let acc of accounts">{{acc.iban}} ({{acc.currency}})>
Массив учетных записей, например, так:
this.accounts = [
{ iban : '123' , currency: 'EUR' },
{ iban: '123' , currency: 'USD' },
{ iban: '234' , currency: 'EUR' }
]
Как я могу динамически находить учетные записи с одинаковым iban, удалять одну из них из списка и добавлять удаленную валюту учетной записи в другую учетную запись?
Ожидаемый результат:
this.accounts = [
{ iban: '123' , currency 'EUR, USD' },
{ iban: '234' , currency: 'EUR' }
]
Ответ №1:
Вы можете использовать Object.values() и Array.prototype.reduce() для объединения учетных записей с одинаковым IBAN и объединения валют через запятую.
С помощью reduce
вы выполняете итерацию по своему accounts
массиву и создаете промежуточный словарь, который сопоставляет iban
объединенные учетные записи, затем с помощью Object.values()
вы перечисляете значения словарных записей, чтобы вернуть массив.
const accounts = [
{ iban : '123' , currency: 'EUR' },
{ iban: '123' , currency: 'USD' },
{ iban: '234' , currency: 'EUR' }
];
const result = Object.values(accounts.reduce((acc, { iban, currency }) => {
acc[iban] = acc[iban]
? { ...acc[iban], currency: acc[iban].currency ', ' currency }
: { iban, currency };
return acc;
}, {}));
console.log(result);
Комментарии:
1. Большое вам спасибо! 🙂