let sumData = []; menu.value.forEach((item) => { const list = item.options.filter((v) => v.isActive); if (list.length > 0) sumData.push({ type: item.type, list, }); }); 优化
时间: 2024-03-16 17:43:05 浏览: 51
可以使用 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 数组。
阅读全文