for (i in rtn.Data.CombRuleSets){ for (x in rtn.Data.CombRuleSets[i].RuleReTestSets){ for (y in rtn.Data.CombRuleSets[i].RuleReTestSets[x].ReTestSets){ let reTestSets = rtn.Data.CombRuleSets[i].RuleReTestSets[x].ReTestSets[y]; if (reTestSets.Type.Id == 20 || reTestSets.Type.Id == 21 || reTestSets.Type.Id == 22 || reTestSets.Type.Id == 23 || reTestSets.Type.Id == 24 || reTestSets.Type.Id == 25 || reTestSets.Type.Id == 26 ){ retestObj.ResourceId = reTestSets.ResourceId } } } }请帮我优化代码
时间: 2024-02-14 13:13:15 浏览: 15
你可以使用数组的 includes() 方法来简化代码。具体来说,可以将 if 语句中的多个判断条件放入一个数组中,然后使用 includes() 方法判断某个值是否在数组中出现过。
优化后的代码如下:
```
for (let i in rtn.Data.CombRuleSets) {
for (let x in rtn.Data.CombRuleSets[i].RuleReTestSets) {
for (let y in rtn.Data.CombRuleSets[i].RuleReTestSets[x].ReTestSets) {
let reTestSets = rtn.Data.CombRuleSets[i].RuleReTestSets[x].ReTestSets[y];
if ([20, 21, 22, 23, 24, 25, 26].includes(reTestSets.Type.Id)) {
retestObj.ResourceId = reTestSets.ResourceId;
}
}
}
}
```
这样代码更简洁,易读性也更好。
相关问题
if (typeid == 20 || typeid == 21 || typeid == 22){ retestObj.ResourceId = rtn.Data.CombRuleSets[0].RuleReTestSets[i].ReTestSets[0].ResourceId } 帮我优化下代码
可以考虑使用数组或者集合来存储 `20`、`21`、`22`,然后使用 `includes` 方法来判断 `typeid` 是否在其中,从而避免多次使用 `||` 进行条件判断。同时,可以将 `rtn.Data.CombRuleSets[0].RuleReTestSets[i].ReTestSets[0]` 提取出来,避免多次重复访问。优化后的代码如下:
```javascript
const validTypeIds = [20, 21, 22];
const reTestSets = rtn.Data.CombRuleSets[0].RuleReTestSets[i].ReTestSets[0];
if (validTypeIds.includes(typeid)) {
retestObj.ResourceId = reTestSets.ResourceId;
}
```
makeDecision(){ let items = []; let mins = []; let maxs = []; let selKeys = Object.keys(this.select); for(let i=0;i<selKeys.length;i++){ if(this.select[selKeys[i]]) { items.push(selKeys[i]); mins.push(this.minvalue[selKeys[i]]); maxs.push(this.maxvalue[selKeys[i]]); } } let index = this; $.ajax({ type: "POST", url: "/make_decision_mapping", data: {"items":items,"mins":mins,"maxs":maxs}, traditional: true, success: function (rtn) { console.log(rtn); index.decisions = []; for(let i=0;i<rtn.tecs.length;i++){ let obj = {}; let names = index.tecName(rtn.tecs[i]); obj.tecone = index.getTecString(names["坡体防护技术"]); obj.tectwo = index.getTecString(names["截排水技术"]); obj.tecthree = index.getTecString(names["建植技术"]); obj.tecfour = index.getTecString(names["养护技术"]); obj.score = rtn.scores[i]; index.decisions.push(obj); } } }); },
这段代码是一个 JavaScript 函数,名为 `makeDecision()`。该函数会执行一个 AJAX POST 请求,发送 items、mins 和 maxs 三个参数到服务器的 "/make_decision_mapping" URL,然后等待服务器返回结果。在请求成功后,该函数会将返回的数据解析为 decisions 数组,并将其赋值给 index.decisions 变量。decisions 数组中的每个元素都是一个对象,包含了四个技术方案和一个得分。其中,`index` 是一个当前对象的引用,`$` 是 jQuery 库的全局变量。