优化代码newArr.map((item) => { item.dialog.readonly = false; if (data.storageType == 1) { if ( item.key == 'name' || item.key == 'brand' || item.key == 'model' || item.key == 'specification' || item.key == 'unit' ) { item.dialog.disabled = true; } } else { if ( item.key == 'name' || item.key == 'brand' || item.key == 'model' || item.key == 'specification' || item.key == 'unit' ) { item.dialog.disabled = false; } } if (data.type == 2) { if (item.key == 'mainAssetCode') { item.dialog.hide = false; } } else { if (item.key == 'mainAssetCode') { item.dialog.hide = true; } } if (data.storageType == 1) { if (item.key == 'orderCode') { item.dialog.hide = false; } } else { if (item.key == 'orderCode') { item.dialog.hide = true; } } });
时间: 2024-03-20 14:40:39 浏览: 88
可以使用对象解构和简化条件语句来优化上述代码,如下所示:
```
newArr.forEach((item) => {
const { dialog, key } = item;
dialog.readonly = false;
if (data.storageType === 1) {
dialog.disabled = ['name', 'brand', 'model', 'specification', 'unit'].includes(key);
dialog.hide = key === 'orderCode' ? false : dialog.hide;
} else {
dialog.disabled = false;
dialog.hide = key === 'orderCode' ? true : dialog.hide;
}
if (data.type === 2) {
dialog.hide = key === 'mainAssetCode' ? false : dialog.hide;
} else {
dialog.hide = key === 'mainAssetCode' ? true : dialog.hide;
}
});
```
这样做可以使代码更加简洁易读,同时减少重复的代码块。
相关问题
let groups = [...new Set(company2.map(item => item.parentCode))]; let newArr = groups.map(parentCode =>{ let children = company2.filter(item => item.parentCode == parentCode); children.forEach(child => { // 获取当前子项的父项 let parent = company2.find(item => item.parentCode === parentCode); // 将父项的companyName赋值给子项 child.parentName = parent.companyName; }); return children; }); this.child = newArr; console.log(this.child); 将获得的数组中的每一项中的companyName提取出来当作该数组的键值
你可以使用reduce方法将获得的数组转换为对象,其中对象的key为每个子项的companyName,value为所有具有该companyName的子项组成的数组,示例代码如下:
```
let childObj = this.child.reduce((acc, item) => {
let companyName = item[0].parentName;
acc[companyName] = item;
return acc;
}, {});
console.log(childObj);
```
这样就可以得到一个以companyName为键值的对象,其中每个键对应的值为具有该companyName的所有子项组成的数组。
如何得到newArr数组中的companyName并根据数组显示 let groups = [...new Set(company2.map(item => item.parentCode))]; let newArr = groups.map(parentCode =>{ return company2.filter(item => item.parentCode == parentCode); }) this.child = newArr; console.log(this.child)
可以使用数组的 map 方法遍历 newArr 数组,然后在每个子数组中使用 map 方法获取 companyName,最后将其显示出来。可以参考下面的代码示例:
```
let groups = [...new Set(company2.map(item => item.parentCode))];
let newArr = groups.map(parentCode =>{
return company2.filter(item => item.parentCode == parentCode);
});
this.child = newArr;
console.log(this.child);
// 获取 companyName 并显示
this.child.map(group => {
group.map(item => {
console.log(item.companyName);
});
});
```
在上面的代码中,我们首先使用 Set 和 map 方法获取了按 parentCode 分组后的子数组 newArr,然后将其赋值给 this.child,并在控制台中输出了 this.child 的值。
接下来,我们使用 map 方法遍历 this.child,然后使用 map 方法遍历每个子数组 group,最后获取其中的 companyName 并显示出来。
阅读全文