orderInvoiceData.value.forEach(item => { item.invoiceList.forEach(i => { i.detail_list.forEach(index => { if (index.tax_code && index.tax_code.toString() !== '错误编码') { index.tax_code = index.tax_code.padEnd(codeLength, '0') } }) }) }) 优化这三层for循环的代码
时间: 2024-03-06 16:48:58 浏览: 155
可以使用 `Array.prototype.flatMap()` 方法和 `Array.prototype.map()` 方法来简化这段代码:
```
orderInvoiceData.value.flatMap(item => item.invoiceList)
.flatMap(i => i.detail_list)
.forEach(index => {
if (index.tax_code && index.tax_code.toString() !== '错误编码') {
index.tax_code = index.tax_code.padEnd(codeLength, '0')
}
});
```
这里使用了两个 `flatMap()` 方法,第一个将 `orderInvoiceData.value` 中的所有发票列表扁平化成一个数组,第二个将每个发票的详情列表扁平化成一个数组。最后通过 `forEach()` 方法遍历所有的详情列表,进行税号填充的操作。这种方式可以避免多层嵌套的循环,使代码更加简洁易懂。
相关问题
orderInvoiceData.value.forEach(item => { item.invoiceList.forEach(i => { i.detail_list.forEach(index => { if (index.tax_code && index.tax_code.toString() !== '错误编码') { index.tax_code = index.tax_code.padEnd(codeLength, '0') } }) }) })
这是一段 JavaScript 代码,它是对订单发票数据进行遍历操作。具体来说,它对每个订单的发票列表进行遍历,然后对每张发票的详情列表进行遍历。在遍历过程中,如果发现某个详情里的税号存在且不是"错误编码",就将其用"0"进行填充,直到达到指定的税号长度为止。这段代码可能用于处理发票数据的规范化或者格式化。
优化这段代码:private List<DynamicSource> getDynamicSourceList(List<DasymesQltyMpCertfInfoItemMod> itemModList) { List<Map<String, String>> mapList = new ArrayList<>(); if (itemModList == null || itemModList.size() == 0) { Map<String, String> map = new HashMap<>(); map.put("no", null); map.put("name", null); map.put("portion", null); mapList.add(map); return DynamicSource.createList("detail", mapList); } for (int i = 1; i <= itemModList.size(); i++) { DasymesQltyMpCertfInfoItemMod item = itemModList.get(i - 1); Map<String, String> map = new HashMap<>(); map.put("no", i + ""); map.put("name", item.getItemName()); map.put("portion", item.getPortion()); mapList.add(map); } return DynamicSource.createList("detail", mapList); }
可以优化的地方如下:
1. 在if语句中,可以直接创建map并添加到mapList中,避免了在后面的循环中再创建map。
2. 在循环中,可以使用foreach循环代替for循环,避免了使用i变量。
3. 在创建DynamicSource时,可以直接使用mapList,不需要再创建一个中间变量。
优化后的代码如下:
```
private List<DynamicSource> getDynamicSourceList(List<DasymesQltyMpCertfInfoItemMod> itemModList) {
List<Map<String, String>> mapList = new ArrayList<>();
if (itemModList == null || itemModList.isEmpty()) {
mapList.add(Map.of(
"no", null,
"name", null,
"portion", null
));
} else {
for (DasymesQltyMpCertfInfoItemMod item : itemModList) {
Map<String, String> map = new HashMap<>();
map.put("no", String.valueOf(mapList.size() + 1));
map.put("name", item.getItemName());
map.put("portion", item.getPortion());
mapList.add(map);
}
}
return DynamicSource.createList("detail", mapList);
}
```
这样代码更加简洁易读,也更加高效。
阅读全文