优化 const { list } = form.value list.forEach(v => { if (Array.isArray(v.tenantPhoto)) { let arr = [] v.tenantPhoto?.forEach(v => { //去除头部地址 if (v.url) { v.url = '/profile' + v.url.split('/profile')[1] arr.push(v.url) } else { v = '/profile' + v?.split('/profile')[1] arr.push(v) } }) v.tenantPhoto = arr.join(',') } else { v.tenantPhoto = v.tenantPhoto.split(",") let arr = [] v.tenantPhoto?.forEach(v => { //去除头部地址 v = '/profile' + v?.split('/profile')[1] arr.push(v) }) v.tenantPhoto = arr.join(',') } })
时间: 2024-02-10 21:08:02 浏览: 28
可以尝试使用函数式编程的方式来重构这段代码,减少重复逻辑和嵌套,提高可读性和可维护性。具体实现可以使用 Array 的 map 和 join 方法来简化代码,如下所示:
```javascript
const { list } = form.value;
list.forEach(v => {
v.tenantPhoto = Array.isArray(v.tenantPhoto)
? v.tenantPhoto.map(photo => '/profile' + photo.url.split('/profile')[1] || '/profile' + photo.split('/profile')[1]).join(',')
: v.tenantPhoto.split(',').map(photo => '/profile' + photo.split('/profile')[1]).join(',');
});
```
这段代码可以将 `tenantPhoto` 数组或者逗号分隔的字符串转换成以 `/profile` 开头的字符串,并使用 join 方法将其连接成一个字符串。同时,使用 map 函数可以避免重复逻辑和嵌套。
相关问题
const sumData = menu.value.map((item) => { let list = item.options.filter((v) => v.isActive); return { type: item.type, list, }; });
您的代码已经非常简洁明了,只有一点点小的建议:可以省略箭头函数的参数的括号,因为 isActive 是一个 Boolean 类型的变量,可以直接作为 filter 方法的参数。改进后的代码如下:
```
const sumData = menu.value.map(item => {
const list = item.options.filter(v => v.isActive);
return {
type: item.type,
list
};
});
```
这样代码更加简洁易读。
let sumData = []; menu.value.forEach((item) => { const list = item.options.filter((v) => v.isActive); if (list.length > 0) sumData.push({ type: item.type, list, }); }); 优化
可以使用 Array.prototype.reduce() 方法来优化代码,避免使用额外的变量(如 sumData),同时也可以减少代码行数。具体实现如下:
```
const sumData = menu.value.reduce((acc, item) => {
const list = item.options.filter((v) => v.isActive);
if (list.length > 0) {
acc.push({
type: item.type,
list,
});
}
return acc;
}, []);
```
这里使用了 reduce() 方法,初始值为一个空数组。对于 menu.value 数组中的每个元素,我们都会执行一次回调函数。该回调函数中会对每个元素的 options 数组进行过滤,获得 isActive 为 true 的元素,然后将这些元素和 type 属性一起组成一个对象,最后将该对象 push 进 acc 数组中。最后,reduce() 方法返回的就是 acc 数组。