如何为我的if案例制作一个简单的for循环?
这需要很大的空间..而且我不擅长循环...
请帮我..
我会试试......
for(i = 0; i < result.length; i++){
if(result[i] === null){
CODE
if(null === result.RosaAvformning.jan){
result = {
"RosaAvformning" : {"jan":"0"}
};
}
if(null === result.RosaAvformning.feb){
result = {
"RosaAvformning" : {"feb":"0"}
};
}
if(null === result.RosaAvformning.mar){
result = {
"RosaAvformning" : {"mar":"0"}
};
}
if(null === result.RosaAvformning.apr){
result = {
"RosaAvformning" : {"apr":"0"}
};
}
if(null === result.RosaAvformning.maj){
result = {
"RosaAvformning" : {"maj":"0"}
};
}
if(null === result.RosaAvformning.jun){
result = {
"RosaAvformning" : {"jun":"0"}
};
}
if(null === result.RosaAvformning.jul){
result = {
"RosaAvformning" : {"jul":"0"}
};
}
if(null === result.RosaAvformning.aug){
result = {
"RosaAvformning" : {"aug":"0"}
};
}
if(null === result.RosaAvformning.sep){
result = {
"RosaAvformning" : {"sep":"0"}
};
}
if(null === result.RosaAvformning.okt){
result = {
"RosaAvformning" : {"okt":"0"}
};
}
if(null === result.RosaAvformning.nov){
result = {
"RosaAvformning" : {"nov":"0"}
};
}
if(null === result.RosaAvformning.dec){
result = {
"RosaAvformning" : {"dec":"0"}
}
}
修改
var months = ["Jan","Feb","Mar","Apr","Maj","Jun","Jul","Aug","Sep","Okt","Nov","Dec"];
months.forEach(function (m){
if (result.RosaAvformning[m] === null) {
result.RosaAvformning = {};
result.RosaAvformning[m] = 0;
}
});
months.forEach(function (m){
if (result.BlåAvformning[m] === null) {
result.BlåAvformning = {};
result.BlåAvformning[m] = 0;
}
});
console.log(result.RosaAvformning.mar);
Jan,feb已经满了,但其余的都没有。 mar会给我“undefined”而不是“0”,因为我想..
答案 0 :(得分:1)
我不确定提供的代码是否有意义,它会一次又一次地覆盖结果。但是,这是如何将其转换为循环:
创建一个包含您要测试的所有键的数组。然后循环遍历这些键,并为每个键查看它是否为null
,如果是,则指定零:
function oldTest(result) {
if(null === result.RosaAvformning.jan){
result = {
"RosaAvformning" : {"jan":"0"}
};
}
if(null === result.RosaAvformning.feb){
result = {
"RosaAvformning" : {"feb":"0"}
};
}
if(null === result.RosaAvformning.mar){
result = {
"RosaAvformning" : {"mar":"0"}
};
}
return result;
}
function test (result) {
var months = ["jan", "feb", "mar"];
months.forEach(function (m){
if (null === result.RosaAvformning[m]) {
result.RosaAvformning = {};
result.RosaAvformning[m] = 0;
return result;
}
});
return result;
}
// init test data
var result = {};
result.RosaAvformning = {
"jan" : null,
"feb" : null,
"mar" : null
};
// test no months set
console.log ("Old Test 1", test(result));
console.log ("new Test 1", oldTest(result));
// set one month
result.RosaAvformning = {
"jan" : 1,
"feb" : 1,
"mar" : null
};
// test one months set
console.log ("Old Test 2", test(result));
console.log ("new Test 2", oldTest(result));
我准备了一个小的JSBin(由于懒惰只有三个月),两个测试你的代码(oldTest()
)和我的(test()
):https://jsbin.com/vicinuwuyi/1/edit?js,console
答案 1 :(得分:-1)
我假设的意图是用零替换所有空月属性。那是不有问题的代码所做的 - 它取代了上次匹配的整个结果if ...
用类似
的方式声明月份var months = ["jan", "feb", ...
并使用
循环它们var i, len, month;
for (i = 0, len = months.length; i < len; i++) {
month = months[i];
if (null === result.RosaAvformning[month]){ // this null === will NOT match undefined properties!!!
result.RosaAvformning[month] = "0";
}
}
如果您确定month
是null
的声明result.RosaAvformning
属性,那么您可以使用
for (key in someObject) {
if ( someObject.hasOwnProperty(key) ) { // ignore class fields
// access someObject[key])
}
}
但如果undefined
属性不属于null
属性,则会失败,并且可以匹配非月属性...
答案 2 :(得分:-1)
根据代码的外观,您只想测试他们已完成的月份。
要将if语句压缩成for循环,它将是这样的
var arrayList = [jan, feb, mar, apr, may, jun, jul, aug, sep, oct, nov, dec];
var result;
for(var i = 0; i < arrayList.length; i++) {
result = "RosaAvformning : {i : 0}";
}
或者其他类似的东西,我相信你正在使用用户输入,所以你需要将它添加到混合中,我需要看到它来集成它:)