对于我的问题,实现javascript数据操作的最快方法是什么?
我有一个数组。 格式: 我需要为数组中的所有索引添加0-18->male,即48+40,类似于0-18->female:55+53, 还有19-24->男性:41+45和19-24->女性:53+59, 可以有n个索引 我所尝试的:对于我的问题,实现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
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)