Как использовать Reduce () для извлечения информации из вложенных данных в JavaScript?(ES6) - PullRequest
0 голосов
/ 06 июня 2018

Я анализирую данные JSON и использую batdata.reduce() Я пытаюсь найти частоту выхода игроков с битой в крикет.Поэтому я использую a как accumulator и how как currentValue.Поэтому я получу частоту различных значений how (см. Ссылку на данные JSON выше).

Когда я попытаюсь console.log(catches).Я получаю частоту, например: LBW: 20, CAUGHT: 69, DNB: 14, RUNOUT: 3 ......, но в консоли я также получаю undefined:60, почему так?(См. Скриншот)

chart.js:

import React, { Component } from 'react';
import batdata from "./batdata";

const catches = batdata.reduce( (a,{how})  =>{
    if(!a[how]){
        a[how]=1;
    }else{
        a[how]=a[how] + 1;
    }

    return a; 

}, {});

console.log(catches);

снимок экрана:

enter image description here

1 Ответ

0 голосов
/ 06 июня 2018

Если вы хотите использовать только однонаправленные инструкции, вы можете сделать следующее:

const catches = batdata.reduce( (a,{dismissal})  =>{
    a[dismissal.how] = !a[dismissal.how] ? 1 : a[dismissal.how] + 1;
    return a;
}, {});

Теперь, если вы хотите использовать базовую информацию о том, как она присутствует, и отказаться от информации о том, когда она отсутствует, вы можете выполнить:

const catches = batdata.reduce( (a,{how, dismissal})  =>{
    if(typeof how === 'undefined')
        a[dismissal.how] = !a[dismissal.how] ? 1 : a[dismissal.how] + 1;
    else
        a[how] = !a[how] ? 1 : a[how] + 1
    return a; 
}, {});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...