Я пытаюсь суммировать значения, которые появляются в массиве объектов, строятся так:Подытоживая повторяющиеся значения свойств в новый объект
[
{ token: 'N97235', conversions: '2', payout: '100' },
{ token: 'N91567', conversions: '2', payout: '100' },
{ token: 'N91567', conversions: '3', payout: '150' },
{ token: 'N97759', conversions: '2', payout: '100' },
{ token: 'N97240', conversions: '1', payout: '50' },
{ token: 'N13925', conversions: '1', payout: '50' },
{ token: 'N53285', conversions: '1', payout: '50' },
{ token: 'N28312', conversions: '1', payout: '100' },
{ token: 'N96475', conversions: '1', payout: '50' },
{ token: 'N97759', conversions: '2', payout: '100' },
{ token: 'N76951', conversions: '1', payout: '100' },
{ token: 'N39108', conversions: '1', payout: '50' },
{ token: 'N39108', conversions: '4', payout: '200' },
{ token: 'N48854', conversions: '2', payout: '100' },
{ token: 'N50179', conversions: '1', payout: '50' },
{ token: 'N18804', conversions: '1', payout: '50' },
{ token: 'N95631', conversions: '2', payout: '100' },
]
То, что я имею в виду, что я хочу, чтобы подвести все конверсия и выплаты в новый объект, который выглядит как этот
{
N97235: { conversions: 2, payout: 100 },
N39108: { conversions: 5, payout: 250 },
N91567: { conversions: 6, payout: 300},
N96475: { conversions: 1, payout: 50},
// ..and so on
}
Как вы можете видеть, он нашел дубликаты «записи» в исходном массиве и просуммировать их преобразования и выплаты в новый объект (отдельные записи туда а также с). Я попытался выполнить этот массив (tokens_array [] в этом случае) и прикрепить его свойства объектов к новому созданному объекту (convertions_sum {} one), но проблема заключается в том, что сначала «сбрасывает» свои значения , прежде чем добавить что-нибудь к ним ..
tokens_array.forEach(function(element) {
var token_string = element.token.toString();
conversions_sum[token_string] = {};
conversions_sum[token_string].conversions += element.conversions;
conversions_sum[token_string].payout += element.payout;
});
Но так conversions_sum [token_string] .conversions и conversions_sum [token_string] .payout не были инициализированы с первого места - это добавляет число к «не определено '..
Заранее спасибо.
Он отлично работает, но я не уверен, что я полностью понял как этот механизм полностью работает в этой строке - convertions_sum [token_string] = conversionions_sum [token_string] || { конверсий: 0, выплата: 0 }; Когда-то - обнаружено token_string - значит, он просто делает его равным самому себе? Я имею в виду, a = a || {k: 3, r: 4} Что именно он делает, когда a равно? –
Yup, это просто сокращение с помощью '||', поскольку вы хотите инициализировать новый объект только для ключа, если он не существует, поэтому присвоение его самому себе делает? Правильно, ничего не делает. Я просто пытался помочь вам с вашим примером кода, чтобы помочь вам понять, а не переписать всю вашу логику, как это сделал г-н Ибрагим. – rgthree