Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/xpath/2.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数据操作的最快方法是什么?_Javascript - Fatal编程技术网

对于我的问题,实现javascript数据操作的最快方法是什么?

对于我的问题,实现javascript数据操作的最快方法是什么?,javascript,Javascript,我有一个数组。 格式: 我需要为数组中的所有索引添加0-18->male,即48+40,类似于0-18->female:55+53, 还有19-24->男性:41+45和19-24->女性:53+59, 可以有n个索引 我所尝试的: let TotalMale = 0; let TotalFemale = 0; for (key in additionArray) { TotalMale += resultArr[key]['0-18']['male']; Total

我有一个数组。 格式:

我需要为数组中的所有索引添加0-18->male,即48+40,类似于0-18->female:55+53, 还有19-24->男性:41+45和19-24->女性:53+59, 可以有n个索引

我所尝试的:

let TotalMale = 0;
let TotalFemale = 0;
for (key in additionArray) {
       TotalMale += resultArr[key]['0-18']['male'];
       TotalFemale += resultArr[key]['0-18']['female'];
       //Similary creating for '19-24' age group male' and female
  }
预期产出: 0-18->外螺纹->总价值外螺纹, //女性也一样
我不想硬编码年龄和性别,有没有优化的解决方案?

听起来你在问如何创建函数

下面是一个基于您的代码的示例。您可以考虑使用。

let additionArray=[{
"0-18": {
“男”:48,
“女性”:55
},
"19-24": {
“男”:41,
“女”:52
}
},
{
"0-18": {
“男”:40,
“女”:53
},
"19-24": {
“男”:45,
“女”:59
}
}
];
函数计数人口统计(加法数组、年龄、性别){
设total=0;
for(附加数组中的键){
总数+=加法数组[键][年龄][性别];
}
返回总数;
}
log(countDemographics(additionArray,'0-18','male');

log(countDemographics(additionArray,'19-24','female')我猜你想得到整个年龄组的男性/女性合计总数

在这种情况下,您可以尝试使用
Object.values()
获取所有对象值,而无需知道键,然后使用
Object.reduce()
将它们聚合起来

下面是示例代码:

让genderbagegrouparr=[{
"0-18":{
“男”:48,
“女性”:55
},
"19-24":{
“男”:41,
“女”:52
}
},
{
"0-18":{
“男”:40,
“女”:53
},
"19-24":{
“男”:45,
“女”:59
}
}];
函数getTotalByGender(){
const total=性别分组减少((acc,val)=>{
常量值=对象值(val);
值。forEach((val)=>{
acc.male+=val.male;
acc.female+=val.female;
});
返回acc;
}, {
男:0,,
女:0,,
});
返回总数;
}
const total=getTotalByGender();
console.log('male',总计.male);

console.log('female',total.female)这将适用于任何年龄和性别:

var resultArr = {};
for (key in additionArray) {
    for (keyAge in additionArray[key]) {
        for (keyGender in additionArray[key][keyAge]) {
            resultArr[keyAge] = resultArr[keyAge] || {};
            resultArr[keyAge][keyGender] = resultArr[keyAge][keyGender] || 0;
            resultArr[keyAge][keyGender] += additionArray[key][keyAge][keyGender];
        }
    }   
}

console.log(resultArr)

与“硬编码”年龄和性别相比,你想做什么。如何提供年龄和性别?您是否只是按键将所有子对象值相加并将其分组?它将以相同的格式提供。这听起来很像“与附加值合并”。@JaromandaX您能解释一下您的代码吗?Ultimate!!我爱你,兄弟,我会努力的it@KedarKulkarni-只需点击蓝色的“运行代码片段”按钮,它就会在浏览器中正常运行。如果这是您想要的,请记住点击答案旁边的复选标记按钮。我正在尝试获取基于年龄组的值,0-18:TotalMaleValue,0-19:TotalMaleValue我正在尝试获取基于年龄组的值,0-18:TotalMaleValue,0-19:TotalMaleValue
var resultArr = {};
for (key in additionArray) {
    for (keyAge in additionArray[key]) {
        for (keyGender in additionArray[key][keyAge]) {
            resultArr[keyAge] = resultArr[keyAge] || {};
            resultArr[keyAge][keyGender] = resultArr[keyAge][keyGender] || 0;
            resultArr[keyAge][keyGender] += additionArray[key][keyAge][keyGender];
        }
    }   
}

console.log(resultArr)