let memo = [] as any if (baseSetting.value.memo_source === 1) { memo = orderMemoList.value } else if (baseSetting.value.memo_source === 2) { invoiceDetail.value.forEach(item => { memo.push(item.memo) }) } else { memo = orderMemoList.value invoiceDetail.value.forEach(item => { memo.push(item.memo) }) } memo = memo.filter(iv => iv !== null) if (baseSetting.value.memo_merge === 1) { memo = Array.from(new Set(memo)) } memo = memo.join(',') 优化这段代码,防止orerMeomoList的值被修改
时间: 2024-03-27 10:39:30 浏览: 13
可以使用 `slice()` 方法创建一个新的数组,而不是直接引用 `orderMemoList.value`,从而避免原始数组被修改。同时,可以使用 `map()` 方法创建一个新的数组,而不是对原始数组进行遍历和修改。下面是优化后的代码:
```
let memo: string[] = [];
if (baseSetting.value.memo_source === 1) {
memo = orderMemoList.value.slice();
} else if (baseSetting.value.memo_source === 2) {
memo = invoiceDetail.value.map(item => item.memo);
} else {
memo = orderMemoList.value.slice().concat(invoiceDetail.value.map(item => item.memo));
}
memo = memo.filter(iv => iv !== null);
if (baseSetting.value.memo_merge === 1) {
memo = Array.from(new Set(memo));
}
memo = memo.join(',');
```
这样修改之后,`orderMemoList.value` 的值就不会被修改了。
相关问题
解释这行代码if (response.data.findIndex(item => item.IND_MEMO === x.label) !== -1) { chooseAfterValue.value.push(x) }
这是一段JavaScript代码,它先使用findIndex()函数在response.data数组中查找是否有符合条件的元素,如果找到了,则返回找到元素的下标,否则返回-1。然后使用不等于符号来进行判断,如果不等于-1,则执行花括号中的代码,将x添加到chooseAfterValue.value中。此代码的作用是根据x.label在response.data中查找匹配项,并将匹配项添加到chooseAfterValue.value数组中。
select * from (select rownum as r, t.* from (select to_char(a.d_disclosedate, 'yyyy-MM-dd') as showdatetime, a.c_filetype, a.c_filename, a.c_filepath, a.c_month, a.c_year, a.d_modifydate, a.d_createdate, a.l_serialno, b.c_caption, b.c_keyvalue, wm_concat(c.c_fundcode) as c_fundcode, wm_concat(c.c_fundname) as c_fundname, b.c_memo from twordfilesmanage a, tdictionary b, tfundinfo c, twordfundrelation d where 1 = 1 and b.c_sysname = 'DATACNT' and b.l_keyno = 1301 and a.c_publish = '1' and a.c_filetype = trim(b.c_keyvalue) and c.c_fundcode = d.c_fundcode and a.l_serialno = d.l_serialno and a.c_filetype = '1' group by (a.d_disclosedate, a.c_filetype, a.c_filename, a.c_filepath, a.c_month, a.c_year, a.d_modifydate, a.d_createdate, a.l_serialno, b.c_caption, b.c_keyvalue, b.c_memo)) t where rownum <= 10) where r >= 1
这是一条 SQL 查询语句,目的是从数据库中查询符合条件的记录,并返回所有列的值。具体查询条件如下:
- 查询表 twordfilesmanage、tdictionary、tfundinfo 和 twordfundrelation
- 查询条件包括:
- b.c_sysname = 'DATACNT'
- b.l_keyno = 1301
- a.c_publish = '1'
- a.c_filetype = trim(b.c_keyvalue)
- c.c_fundcode = d.c_fundcode
- a.l_serialno = d.l_serialno
- a.c_filetype = '1'
- 查询结果按照 a.d_disclosedate、a.c_filetype、a.c_filename、a.c_filepath、a.c_month、a.c_year、a.d_modifydate、a.d_createdate、a.l_serialno、b.c_caption、b.c_keyvalue 和 b.c_memo 分组,并使用 wm_concat 函数对 c.c_fundcode 和 c.c_fundname 进行合并处理
- 最终返回 10 条符合条件的记录
该查询语句的具体实现可能会根据数据库的不同而有所不同。