优化这段代码。 if (this.title == '新增' && val == '0') { this.buildingIds = [] }
时间: 2024-05-21 21:12:40 浏览: 11
&& this.check()) {
var data = {
name: this.name,
age: this.age,
gender: this.gender
};
this.saveData(data);
}
可以优化为:
if (this.title === '新增' && this.check()) {
const { name, age, gender } = this;
const data = { name, age, gender };
this.saveData(data);
}
这样可以减少对于对象属性的重复访问,使用解构赋值语法可以进一步简化代码。
相关问题
帮我优化一下 下面的代码 _list.forEach(item=>{ item.child.forEach(i=>{ i.forEach(k=>{ if (k.id === id) { dropData = k } }) }) }) _list.forEach(item => { item.child.forEach(val=>{ val.forEach(k=>{ if (k.timetableInputId === dropData.timetableInputId && k.sequence === dropData.sequence && k.week === dropData.week && +k.classPeriodType === 4 ) { k.classId = item.id dropDataPackage.push(k) } }) }) })
可以将上述代码进行优化,通过使用 Array 的内置方法,例如 `find` 和 `filter` 等,可以提高代码的可读性和执行效率。下面是一个可能的优化版本:
```
const dropData = _list.flatMap(item => item.child.flat().find(i => i.some(k => k.id === id)))
if (dropData) {
const dropDataPackage = _list.flatMap(item => item.child.flat().filter(val => val.some(k => k.timetableInputId === dropData.timetableInputId && k.sequence === dropData.sequence && k.week === dropData.week && +k.classPeriodType === 4)).map(k => { k.classId = item.id; return k }))
}
```
优化后的代码使用了 `flatMap` 和 `find` 方法来查找匹配的 `dropData` 对象,使用 `flatMap` 和 `filter` 方法来查找匹配的 `dropDataPackage` 数组,并使用 `map` 方法将 `classId` 添加到匹配的对象中。
帮我优化 initOpr() { let view = this.hasPermission('yz/business/cele:view') let edit = this.hasPermission('yz/business/cele:edit') let forbid = this.hasPermission('yz/business/cele:forbid') let check = this.hasPermission('yz/business/cele:check') let fiction = this.hasPermission('yz/business/cele:fiction') let recommand = this.hasPermission('yz/business/cele:recommand') let reset = this.hasPermission('yz/business/cele:reset') let ratio = this.hasPermission('yz/business/cele:ratio') if(!view&&!edit&&!forbid&&!check&&!fiction&&!recommand&&!reset&&!ratio){ this.columns.splice(this.columns.length-1,1) } this.oprList = [] this.tableData.forEach((val, index) => { let oprArr = [] if(view){ oprArr.push('查看') } if (val.state !== 3 && val.state !== 4&&edit) { oprArr.push('编辑') } if (val.state === 1&&forbid) { oprArr.push('封禁') } else if (val.state === 0&&forbid) { oprArr.push('启用') } if (val.checkOnOff == 1&&check) { oprArr.push('后置审核') } else if(check) { oprArr.push('前置审核') } if(fiction){ oprArr.push('虚拟粉丝量') } // oprArr.push('支付设置') if (val.isAutoRecommend === 1&&recommand) { oprArr.push('关闭推荐值自动增减') } else if(recommand) { oprArr.push('开启推荐值自动增减') } if (val.authType == 1 || val.authType == 5) { if(reset){ oprArr.push('重置账号') } } if(ratio){ oprArr.push('设置分成') } this.oprList.push(oprArr) }) },
可以尝试优化 initOpr() 函数的代码,使其更加简洁和易于维护。以下是可能的优化方式:
1. 将权限字符串存储在数组中,使用循环来检查每个权限是否存在,并将结果存储在布尔值数组中。
2. 将每个操作的名称和相应的条件存储在对象中,使用循环来检查每个条件是否满足,并将结果存储在一个操作数组中。
3. 将操作数组存储在一个对象中,其中键是表格数据中每个行的索引,值是该行的操作数组。
4. 在循环结束后,使用一个函数来更新表格数据中的每一行的操作列。
下面是一个可能的优化方案:
```
initOpr() {
const permissions = [
'yz/business/cele:view',
'yz/business/cele:edit',
'yz/business/cele:forbid',
'yz/business/cele:check',
'yz/business/cele:fiction',
'yz/business/cele:recommand',
'yz/business/cele:reset',
'yz/business/cele:ratio'
];
const hasPermission = permission => this.hasPermission(permission);
const permissionFlags = permissions.map(hasPermission);
const operations = {
view: { name: '查看', condition: permissionFlags[0] },
edit: { name: '编辑', condition: (val, index) => val.state !== 3 && val.state !== 4 && permissionFlags[1] },
forbid: { name: '封禁', condition: (val, index) => val.state === 1 && permissionFlags[2] },
enable: { name: '启用', condition: (val, index) => val.state === 0 && permissionFlags[2] },
check: { name: '前置审核', condition: (val, index) => val.checkOnOff !== 1 && permissionFlags[3] },
postCheck: { name: '后置审核', condition: (val, index) => val.checkOnOff === 1 && permissionFlags[3] },
fiction: { name: '虚拟粉丝量', condition: permissionFlags[4] },
closeRecommend: { name: '关闭推荐值自动增减', condition: (val, index) => val.isAutoRecommend === 1 && permissionFlags[5] },
openRecommend: { name: '开启推荐值自动增减', condition: (val, index) => val.isAutoRecommend !== 1 && permissionFlags[5] },
reset: { name: '重置账号', condition: (val, index) => (val.authType === 1 || val.authType === 5) && permissionFlags[6] },
ratio: { name: '设置分成', condition: permissionFlags[7] }
};
const operationsByRow = this.tableData.map((val, index) => {
const rowOperations = [];
Object.values(operations).forEach(operation => {
if (typeof operation.condition === 'function' && operation.condition(val, index)) {
rowOperations.push(operation.name);
} else if (operation.condition === true) {
rowOperations.push(operation.name);
}
});
return rowOperations;
});
this.oprList = operationsByRow;
this.updateTable();
}
updateTable() {
this.tableData.forEach((val, index) => {
const oprArr = this.oprList[index];
if (oprArr.length === 0) {
this.columns.splice(this.columns.length - 1, 1);
}
val.opr = oprArr.join(' | ');
});
}
```
该优化方案使用了一些 JavaScript 中的常用函数,如 map()、forEach() 和 join(),并将检查操作条件的逻辑封装在一个对象中。这样,如果需要添加或修改某个操作,只需要修改 operations 对象即可。同时,该方案还将更新操作列的逻辑封装在了 updateTable() 函数中,使代码更加清晰易懂。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)