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

标签 javascript ecmascript-6

我正在解析 JSON 数据并使用 batdata.reduce()我试图找出击球手在板球比赛中出局的频率。所以我正在使用 aaccumulatorhowcurrentValue 。所以我会得到 how 不同值的频率(请参阅上面的 JSON 数据链接)。

当我尝试 console.log(catches) 。我得到的频率例如:LBW: 20, CAUGHT: 69, DNB: 14, RUNOUT: 3 ......但在控制台中我也得到 undefined:60为什么这样 ? (见截图)

图表.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

最佳答案

如果您只想解雇如何,您可以这样做:

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

关于javascript - 如何使用reduce()从javascript中的嵌套数据中提取信息? (ES6),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50719256/

相关文章:

javascript - lodash绑定(bind)函数用作jQuery事件处理程序...可能吗?

Javascript/AJAX 异步加载旋转器

javascript - 单击链接时如何切换 DIV 的大小以扩展其高度?

javascript - 为什么 (!+[]+[]) 在 Javascript 中是 'true' 而 (false + []) 是 'false'?

javascript - 如何使用 Babel 将 jQuery 的 ECMA6 导入转换为 UMD 包装器?

javascript - JW Player 6 在本地服务器上工作,但在实时服务器上不工作

javascript - 使用 "supersized"jQuery 插件按比例调整全屏图像的大小

javascript - React - 处理状态数组内单元格的修改

ecmascript-6 - WebStorm 在内置对象上报告 "missing import"

javascript - 在 ES6 类中实现数据隐私的另一种方法