Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/374.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 如何对json对象求和_Javascript - Fatal编程技术网

Javascript 如何对json对象求和

Javascript 如何对json对象求和,javascript,Javascript,这是我第一次在这里发帖,如果有什么遗漏或者没有太多信息,请告诉我。我在不断地学习 我从API中提取了一些数据,现在我需要整理所有数据,以便最终只保留键和每个键的总值 我需要每个storeArea将每个区域内的boysTotal和girltotal的所有值相加,因此它看起来像这样:[area1,3193745.7189541734] 我从映射json开始,为每个区域找到了3个不同的对象,然后尝试将所有boysTotal和girltotal合并到一个数组中,这样我就可以使用reduce函数对整个数组

这是我第一次在这里发帖,如果有什么遗漏或者没有太多信息,请告诉我。我在不断地学习

我从API中提取了一些数据,现在我需要整理所有数据,以便最终只保留键和每个键的总值

我需要每个
storeArea
将每个区域内的
boysTotal
girltotal
的所有值相加,因此它看起来像这样:
[area1
3193745.7189541734]

我从映射
json
开始,为每个区域找到了3个不同的对象,然后尝试将所有
boysTotal
girltotal
合并到一个数组中,这样我就可以使用reduce函数对整个数组求和,但我肯定遗漏了一些重要的内容。它是什么?谢谢你的帮助

var results = [];

var json = {
    "stores": [
        {
            "storeArea": "area1",
            "totalStore": [
                {
                    "date": "2018-10-01",
                    "boysTotal": 1082220.3945979946,
                    "girlsTotal": 9585.8794674401543
                },
                {
                    "date": "2018-11-01",
                    "boysTotal": 1056643.6756958894,
                    "girlsTotal": 11018.898987932616
                },
                {
                    "date": "2018-12-01",
                    "boysTotal": 1022322.1218654147,
                    "girlsTotal": 11954.748339502334
                }
            ]
        },
        {
            "storeArea": "area2",
            "totalStore": [
                {
                    "date": "2018-10-01",
                    "boysTotal": 91336.329372028267,
                    "girlsTotal": 0
                },
                {
                    "date": "2018-11-01",
                    "boysTotal": 78130.417193652393,
                    "girlsTotal": 0
                },
                {
                    "date": "2018-12-01",
                    "boysTotal": 100755.62136033915,
                    "girlsTotal": 0
                }
            ]
        },
        {
            "storeArea": "area3",
            "totalStore": [
                {
                    "date": "2018-10-01",
                    "boysTotal": 66604.417069221658,
                    "girlsTotal": 0
                },
                {
                    "date": "2018-11-01",
                    "boysTotal": 63882.129662868538,
                    "girlsTotal": 0
                },
                {
                    "date": "2018-12-01",
                    "boysTotal": 108781.84734382466,
                    "girlsTotal": 0
                }
            ]
        },
        {
            "storeArea": "area4",
            "totalStore": [
                {
                    "date": "2018-10-01",
                    "boysTotal": 0,
                    "girlsTotal": 1452.6775522557543
                },
                {
                    "date": "2018-11-01",
                    "boysTotal": 0,
                    "girlsTotal": 2366.423254655545
                },
                {
                    "date": "2018-12-01",
                    "boysTotal": 0,
                    "girlsTotal": 3485.5840149129986
                }
            ]
        },
        {
            "storeArea": "area5",
            "totalStore": [
                {
                    "date": "2018-10-01",
                    "boysTotal": 3237887.746893588,
                    "girlsTotal": 0
                },
                {
                    "date": "2018-11-01",
                    "boysTotal": 3218724.4935297123,
                    "girlsTotal": 0
                },
                {
                    "date": "2018-12-01",
                    "boysTotal": 2925562.2916941536,
                    "girlsTotal": 0
                }
            ]
        },
        {
            "storeArea": "area6",
            "totalStore": [
                {
                    "date": "2018-10-01",
                    "boysTotal": 291293.35185208195,
                    "girlsTotal": 0
                },
                {
                    "date": "2018-11-01",
                    "boysTotal": 171962.47103846565,
                    "girlsTotal": 0
                },
                {
                    "date": "2018-12-01",
                    "boysTotal": 95615.439855929668,
                    "girlsTotal": 0
                }
            ]
        }
    ]
}

function add(a, b) {
    return a + b;
}
results = json.map(function (x) {
    console.log([x.stores])
    return [x.storeArea, x.totalStore.map(function (y) {
        var subTotal = [[y.boysTotal, y.girlsTotal].reduce(add)]
        return subTotal
    })]
});

您可以使用loadsh对json对象和数组执行操作

这是每个唯一元素的缩减情况

我总是使用u.groupBy,然后在应用缩减后将结果映射到数组。在这种情况下,还原操作为u.sumBy

var obj = [ {"name":"Jack ProjManager","count":12000}, {"name":"Jack ProjManager","count":750000}, {"name":"Joe ProjManager","count":45000} ]; 

var output = _(obj) .groupBy('name') .map((objs, key) => ({ 'name': key, 'count': _.sumBy(objs, 'count') })) .value(); console.log(output);

使用
map
reduce
是一种方法,但您必须
map
进入
存储区
reduce
进入
totalStore

const json={“stores”:[{“storeArea”:“area1”,“totalStore”:[{“date”:“2018-10-01”,“boysTotal”:1082220.3945979946,“girltotal”:9585.8794674401543},{“date”:“2018-11-01”,“boysTotal”:1056643.6756958894,“girltotal”:11018.8987932616},{“date”:“2018-12-01”,“boysTotal”:1022322.1218654147,“girltotal”:11954.833342},{“storeArea”,“totalStore”:[{“日期”:“2018-10-01”,“boysTotal”:91336.329372028267,“girlsTotal”:0},{“日期”:“2018-11-01”,“boysTotal”:78130.417193652393,“girlsTotal”:0},{“日期”:“2018-12-01”,“boysTotal”:100755.62136033915,“girlsTotal”:0},{“存储区”:“区域3”,“totalStore”:“日期”:“2018-10-01”,“boysTotal”:66604.4170692258,“girlsTotal”:2018-11“{”boysTotal:63882.129662868538,“girlsTotal”:0},{“日期”:“2018-12-01”,“boysTotal”:108781.84734382466,“girlsTotal”:0},{“存储区”:“区域4”,“totalStore”:[{“日期”:“2018-10-01”,“boysTotal”:0,“girlsTotal”:1452.6775522557543},{“日期”:“2018-11-01”,“boysTotal”:0,“girlsTotal”:2366.4232546545},{“日期”:“2018-12-01”,“girlsTotal”:“girlsTotal”:0“:3485.5840149129986},{”店面“:”area5“,”totalStore“:[{”日期“:”2018-10-01”,“boysTotal”:3237887.746893588,“GirlTotal”:0},{”日期“:”2018-11-01”,“boysTotal”:3218724.4935297123,“GirlTotal”:0},{”日期“:”2018-12-01”,“boysTotal”:2925562.2916941536,“GirlTotal”:0},{”店面“:”店面“:”area6”,“TotalStoreStore[-01”,“totalStore:”日期“,”2018-12-01:291293.35185208195,“女孩总数”:0},{“日期”:“2018-11-01”,“男孩总数”:171962.47103846565,“女孩总数”:0},{“日期”:“2018-12-01”,“男孩总数”:95615.43985929668,“女孩总数”:0}]}
const resp=json.stores.map(store=>([store.storeArea,store.totalStore.reduce((a,e)=>a+e.boysTotal+e.girltotal,0)])
控制台日志(resp)
var结果=[];
var json={
“商店”:[
{
“存储区”:“区域1”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:1082220.3945979946,
“女孩总数”:9585.8794674401543
},
{
“日期”:“2018-11-01”,
“boysTotal”:1056643.6756958894,
“女孩总数”:11018.8987932616
},
{
“日期”:“2018-12-01”,
“boysTotal”:1022322.1218654147,
“女孩总数”:11954.748339502334
}
]
},
{
“存储区”:“区域2”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:91336.329372028267,
“女孩总数”:0
},
{
“日期”:“2018-11-01”,
“boysTotal”:78130.417193652393,
“女孩总数”:0
},
{
“日期”:“2018-12-01”,
“boysTotal”:100755.62136033915,
“女孩总数”:0
}
]
},
{
“存储区”:“区域3”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:66604.417069221658,
“女孩总数”:0
},
{
“日期”:“2018-11-01”,
“boysTotal”:63882.129662868538,
“女孩总数”:0
},
{
“日期”:“2018-12-01”,
“boysTotal”:108781.84734382466,
“女孩总数”:0
}
]
},
{
“存储区”:“区域4”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:0,
“女孩总数”:1452.6775522557543
},
{
“日期”:“2018-11-01”,
“boysTotal”:0,
“女孩总数”:2366.423254655545
},
{
“日期”:“2018-12-01”,
“boysTotal”:0,
“女孩总数”:3485.5840149129986
}
]
},
{
“存储区”:“区域5”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:3237887.746893588,
“女孩总数”:0
},
{
“日期”:“2018-11-01”,
“boysTotal”:3218724.4935297123,
“女孩总数”:0
},
{
“日期”:“2018-12-01”,
“boysTotal”:2925562.2916941536,
“女孩总数”:0
}
]
},
{
“存储区”:“区域6”,
“totalStore”:[
{
“日期”:“2018-10-01”,
“boysTotal”:291293.35185208195,
“女孩总数”:0
},
{
“日期”:“2018-11-01”,
“boysTotal”:171962.47103846565,
“女孩总数”:0
},
{
“日期”:“2018-12-01”,
“boysTotal”:95615.439855929668,
“女孩总数”:0
}
]
}
]
}
var i=0;

对于(i=0;i,以下代码段将完成工作:

json.stores.forEach(function(x){
     var totalboys=0, totalgirls = 0; // for clarity & flexibility
     x.totalStore.forEach(function(y){
        totalboys += y.boysTotal;
        totalgirls += y.girlsTotal;
     })
     results[x.storeArea] = totalboys + totalgirls;
     console.log(results[x.storeArea])
})

在实际操作中查看它

如何使用面向对象?json表示存储,总数组表示天数。使用存储json构建存储。它的构造函数反过来构建一个天数数组。我们教一个存储如何对自身进行合计(通过减少其总天数),我们教一天如何对自身进行合计(将男孩和女孩总数相加)

类存储日{
建造师(