优化这段代码 let findNoAreasData = []; console.log('findNoAreas res', res); res.datas.data.forEach(x => { // 存在限购地区 if (x.no_areas.length > 0) { x.no_areas.filter(y => { if (y.province_id == this.addrCode.province) { this.goodsDatas.filter(z => { if (z.goods_sku.third_sku_id == y.sku_id) { z.goods_sku.notDelivery = true; if (z.goods_sku.notDelivery) { this.no_areas = true; } } }) } }) } });
时间: 2024-02-24 17:54:01 浏览: 116
Matlab串口函数.pdf
这段代码可以优化如下:
```
let noAreasSkuIds = res.datas.data
.filter(x => x.no_areas.some(y => y.province_id == this.addrCode.province))
.map(x => x.no_areas.filter(y => y.province_id == this.addrCode.province))
.flat()
.map(y => y.sku_id);
if (noAreasSkuIds.length > 0) {
this.goodsDatas.forEach(z => {
if (noAreasSkuIds.includes(z.goods_sku.third_sku_id)) {
z.goods_sku.notDelivery = true;
this.no_areas = true;
}
});
}
```
这段代码首先使用 `filter` 函数筛选出限购地区中包含当前省份的数据,并使用 `map` 函数提取出对应的 `sku_id` 数组。然后判断该数组是否为空,如果不为空则遍历商品数据,将 `sku_id` 在数组中出现过的商品标记为不可配送。这样可以减少嵌套循环的层数,提高代码的可读性和执行效率。
阅读全文