Javascript 如何通过键来编写和添加对象
我正在使用javascript处理对象 1.Javascript 如何通过键来编写和添加对象,javascript,angularjs,Javascript,Angularjs,我正在使用javascript处理对象 1. Units = [ { "BedDetails": [ { "Outpatient": 2, "ICU_Beds": 0, "NL_Beds": 2, "Extra": 9, "Ordinary": 3, "ADM
Units = [
{
"BedDetails": [
{
"Outpatient": 2,
"ICU_Beds": 0,
"NL_Beds": 2,
"Extra": 9,
"Ordinary": 3,
"ADMIN": 6,
"SVC_Areas": 3.2 // It is different kind not type of bed
}
]
},
{
"BedDetails": [
{
"Outpatient": 4,
"ICU_Beds":2,
"Extra": 2,
"Ordinary": 2,
"ADMIN":2,
"SVC_Areas": 2.1 // It is different kind not type of bed
}
]
}
]
这里我需要执行三个操作
- 第一步是总结床的类型
- 第2步是,如果床型>0,则床型下的svc总和如下
outmount>0=>SVC\U outmount=2
//此处ICU=0,因此执行求和ICU>0=>SVC\u ICU=0
- 步骤3是在步骤1/步骤2中获得的
(床型总和)/SVC_床型的比率
Units.forEach(function (element) {
var Beds_Details = element.BedDetails[0];
Sum_Outpatient += Beds_Details.Outpatient;
Sum_ICUBeds += Beds_Details.ICU_Beds;
Sum_Extra += Beds_Details.Extra;
Sum_Ordinary += Beds_Details.Ordinary;
Sum_ADMIN += Beds_Details.ADMIN;
if (Beds_Details.Outpatient > 0) { (SVC_Outpatient += Beds_Details.SVC_Areas).toFixed(2); }
if (Beds_Details.ICU_Beds > 0) { (SVC_ICUBeds += Beds_Details.SVC_Areas).toFixed(2); }
if (Beds_Details.Extra > 0) { (SVC_Extra += Beds_Details.SVC_Areas).toFixed(2); }
if (Beds_Details.Ordinary > 0) { (SVC_Ordinary += Beds_Details.SVC_Areas).toFixed(2); }
if (Beds_Details.ADMIN > 0) { (SVC_ADMIN += Beds_Details.SVC_Areas).toFixed(2); }
});
if (SVC_Outpatient > 0) {
RatioModel_Outpatient = (Sum_Outpatient / SVC_Outpatient ).toFixed(2);
} else {
RatioModel_Outpatient = 0;
};
if (SVC_ICUBeds > 0) {
RatioModel_ICUBeds = (Sum_ICUBeds / SVC_ICUBeds).toFixed(2);
} else {
RatioModel_ICUBeds = 0;
};
if (SVC_Extra > 0) {
RatioModel_EX_TR = (Sum_Extra / SVC_Extra ).toFixed(2);
} else {
RatioModel_Extra = 0;
};
if (SVC_Ordinary > 0) {
RatioModel_Ordinary = (Sum_Ordinary / SVC_Ordinary ).toFixed(2);
} else {
RatioModel_Ordinary = 0;
};
if (SVC_ADMIN > 0) {
RatioModel_ADMIN = (Sum_ADMIN / SVC_ADMIN).toFixed(2);
} else {
RatioModel_ADMIN = 0;
};
虽然代码运行良好,但我需要通过Bed_details键循环优化代码
任何人都可以帮助解决这两个问题吗根据我们的聊天,您的要求在这里实现。 您将在输出对象中获得输出 在这里找到工作小提琴
你能问两个问题吗?摆脱它。对你来说也更容易理解。你要找的是
对象。键(卷)
,但它只返回键,你需要做一个循环来遍历它们,并访问所需的属性,以便清楚地解释你的第二个问题。最好是另一个qn@JinsPeter问题解释得很清楚。请check@charantej床的类型在哪里?Thanx对于所有的帮助和回答,需要对回答进行一个小的修改。在var bedItem
u中,您已获取了属性名称,现在,当[0]中缺少一个属性,而remainingYeah中存在一个属性时,会发生什么情况。我已经看到了。您必须在BedDetails[0]中包含所有属性。或者,您必须创建一个新数组来循环使用keyarray=[“门诊”、“重症监护病房床位”、“管理员”]。@charantej您希望我也这样做吗。??请接受答案,并给我投票?
var output = {};
function getPropertySum(propertyName){
var sum = 0;
Units.forEach(function(obj){
var item = obj.BedDetails["0"];
sum = sum + (item[propertyName]||0);
});
return sum;
};
function getPropertySVC(propertyName){
var svc = 0;
Units.forEach(function(obj){
var item = obj.BedDetails["0"];
if(item[propertyName]>0){
svc = svc + (item.SVC_Areas||0);
}
});
return parseFloat(svc.toFixed(2));
};
function getPropertyDetails(propertyName){
var svc = getPropertySVC(propertyName);
var sum = getPropertySum(propertyName);
var ratio = svc === 0 ? 0: sum/svc;
output["Sum_"+ propertyName] = sum;
output["SVC_"+ propertyName] = svc;
output["RatioModel_"+ propertyName] = parseFloat(ratio.toFixed(2));
}
var bedItem = Units[0].BedDetails[0];
for(var property in bedItem){
if(property!=="SVC_Areas"){
getPropertyDetails(property);
}
}
console.log(output);