Как отделить ключ словаря, значение и сумму его значений с помощью nodejs - PullRequest
0 голосов
/ 19 октября 2018

Я работаю над nodejs.У меня есть список значений словаря.Я хотел бы отделить значение от словаря и сумму этого.Пожалуйста, кто-нибудь, помогите мне сделать это с примером кода.У меня есть список словаря, как показано ниже.

      plz_help = [{  description: 'Senior', Amount: 50},
                  {  description: 'Senior', Amount: 50},
                  {  description: 'Adult', Amount: 75},
                  {  description: 'Child', Amount: 35},
                  {  description: 'Infant', Amount: 25 },
                  {  description: 'Adult', Amount:15},
                 ];

Я хотел бы получить результат, как показано в примере ниже:

 plz_help = { 'Senior':100, 'Adult':90, 'Child':35, 'Infant':25}

Пожалуйста, помогите мне получить такой результат, используя nodejs

1 Ответ

0 голосов
/ 19 октября 2018

На ум приходит пара подходов.Один из них - просто перебирать массив и суммировать вещи, помещая их в надлежащее «ведро» в объекте «результат».Если корзины нет, создайте ее.

Второй подход - reduce массив.В качестве преимущества этого подхода вы можете передать дополнительный аргумент функции withReduce для настройки вашего редуктора.

const arr = [{  description: 'Senior', Amount: 50},
    {  description: 'Senior', Amount: 50},
    {  description: 'Adult', Amount: 75},
    {  description: 'Child', Amount: 35},
    {  description: 'Infant', Amount: 25 },
    {  description: 'Adult', Amount:15},
];

function iterative(arr) {
    const result = {};
    for (const element of arr) {
        // initialize with 0 if first encounter of this description
        if (result[element.description] === undefined) {
            result[element.description] = 0;
        }
        result[element.description] += element.Amount;
    }
    return result;
}

function withReduce(arr) {
    function reducer(totals, element) {
        if (totals[element.description] === undefined) {
            totals[element.description] = 0;
        }
        totals[element.description] += element.Amount;
        return totals;
    }

    return arr.reduce(reducer, {});
}

console.log(iterative(arr));
console.log(withReduce(arr));

Выходы

{ Senior: 100, Adult: 90, Child: 35, Infant: 25 }
{ Senior: 100, Adult: 90, Child: 35, Infant: 25 }
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...