如何使用reduce()从javascript中的嵌套数据中提取信息? (ES6)

时间:2018-06-06 11:26:19

标签: javascript ecmascript-6

我正在解析JSON数据并使用batdata.reduce()我试图找出击球手如何在板球比赛中出局的频率。所以我使用a作为accumulatorhow作为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 :(得分:2)

如果你只想要dimissal hows,你可以这样做:

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; 
}, {});