Javascript 多个阵列,组合成一个,得到平均d3

Javascript 多个阵列,组合成一个,得到平均d3,javascript,arrays,json,d3.js,Javascript,Arrays,Json,D3.js,我有一个函数,它循环遍历json对象并将它们推送到数组中。下面是其中一个对象的示例。每个对象都有完全相同的统计键,当然,值不同。我需要循环遍历所有数组并将统计数据相加,然后将它们除以数组的数量。当然,我可以用一些循环函数来实现这一点……但是因为我使用的是d3,我想我应该试着找出内置的是什么,也就是d3。意思是有没有办法获取所有数组中的所有值并在d3中求平均值 { "name": "Mr Man", "position": "G", "image":

我有一个函数,它循环遍历json对象并将它们推送到数组中。下面是其中一个对象的示例。每个对象都有完全相同的统计键,当然,值不同。我需要循环遍历所有数组并将统计数据相加,然后将它们除以数组的数量。当然,我可以用一些循环函数来实现这一点……但是因为我使用的是d3,我想我应该试着找出内置的是什么,也就是d3。意思是有没有办法获取所有数组中的所有值并在d3中求平均值

{
        "name": "Mr Man",
        "position": "G",
        "image": "img/mrman.jpg",
        "stats": {
            "GP": 35,
            "Min": 567,
            "Points": 191,
            "Rebounds": 46,
            "Assists": 72,
            "Steals": 18,
            "Blocks": 1,
            "Turnovers": 37,
            "FGAtt": 151,
            "FGMade": 63,
            "TPtAtt": 55,
            "TPMade": 18,
            "FTAtt": 47,
            "FTMade": 71
        }
        // doing this works but it's very inefficient...I should be able to loop this
        var tempdata = playerArr.slice()
    console.log(tempdata + "tempdata")


    function meanVal(value) {
        return d3.mean(tempdata, function(d) {
        return d.stats[value] })
    }
    var avgArray = {};
    avgArray.GP = meanVal('GP');
    avgArray.Min = meanVal('Min');
    avgArray.FGMade = meanVal('FGMade');
    avgArray.FGAtt = meanVal('FGAtt');
    avgArray.TPMade = meanVal('TPMade');
    avgArray.TPAtt = meanVal('TPAtt');
    avgArray.Points = meanVal('Points');
    avgArray.Rebounds = meanVal('Rebounds');
    avgArray.Assists = meanVal('Assists');
    avgArray.Turnovers = meanVal('Turnovers');
    avgArray.Steals = meanVal('Steals');
    avgArray.Blocks = meanVal('Blocks');

    console.log(avgArray.Min + "ar")
像这样的东西不起作用……可能是因为我把重点放在了多个阵列上,而不是一个阵列上:

function returnMean(value) {
        return d3.mean(playerArr.stats, function(d) {
        return d [value] })
    }

    var myMean = returnMean('Points');
    console.log(myMean)
            console.log(playerArr.length) // returns more than 1, say 2 or 3 or 4
在这种情况下,我可能不得不使用拼接: var tempdata=playerArr.slice 函数返回平均值{ 返回d3.meantempdata,函数d{ 返回d.stats[value]}
}

听起来你需要的是d.stats[value],而不是d[value]。问题是,正如你所看到的,我的stats“array”实际上是一个对象……playerArr.stats,functiond{return d.stats[value]}不起作用……playerArr,functiond{return d.stats[value]}我想我可能已经解决了这个问题?我必须使用splice:var tempdata=playerArr.slice