Promise.all编辑查询

前端有个列表,遍历列表多次查询接口

const promseList = res?.list?.map(async (item) => {
    const res = await projectService.getSignatureNum(item.id);
    return res;
});
const resNum = promseList ? await Promise.all(promseList) : [];
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
async openDialog () { console.log(this.objFormData, '编辑信息') // 获取所有案由的违规条款选项和依据数据 const optionsMap = new Map() const basisMap = new Map() await Promise.all(this.objFormData.accordList.map(async accord => { // console.log(accord, '打印') const { data: optionData } = await getLawRules(accord.violationAccord) optionsMap.set(accord.violationAccord, lawTreeFilter(optionData)) basisMap.set(accord.violationAccord, accord.accordBasis) })) // 处理条例数据 const gistList = [] for (const accord of this.objFormData.accordList) { accord.accordDetail.forEach(item => { let labels = item.violationClause.split("-").map(str => str.trim()).filter(Boolean) // console.log(labels, 'labels') const illegalOptions = accord.illegalOptions || optionsMap.get(accord.violationAccord) const ruleIdList = [] let options = illegalOptions for (const label of labels) { const option = options.find(opt => opt.label === label) if (option) { ruleIdList.push(option.value) options = option.children } } // console.log(ruleIdList,'ruleIdList') // console.log(options,'options') // 添加选择的数据到数组中 // const selectedData = { // violationAccord: accord.violationAccord, // violationAccordText: accord.violationAccordText, // illegalValue: ruleIdList // } // gistList.push(selectedData) // 添加数据到回显数据中 const elRuleList = [{ illegalValue: ruleIdList }]; console.log(elRuleList,'hhhhhh') const echoData = { gistValue: accord.violationAccordText, ruleList: elRuleList, illegalOptions: illegalOptions, basis: basisMap.get(accord.violationAccord) } this.gistList.push(echoData) }) } },这个方法中,这个 accord.violationAccordText值相等的把他们对应的elRuleList这个值放到一个ruleList里面
05-27
好的,你可以使用 Map 数据结构来处理相同 violationAccordText 值的情况,将 echoData 存储在 Map 中,以 violationAccordText 作为键名。如果已经存在相同键名的数据,则将其 elRuleList 值合并到已存在数据的 ruleList 中。可以参考下面的代码: ``` async openDialog() { console.log(this.objFormData, "编辑信息"); const optionsMap = new Map(); const basisMap = new Map(); await Promise.all( this.objFormData.accordList.map(async (accord) => { const { data: optionData } = await getLawRules(accord.violationAccord); optionsMap.set(accord.violationAccord, lawTreeFilter(optionData)); basisMap.set(accord.violationAccord, accord.accordBasis); }) ); const echoDataMap = new Map(); for (const accord of this.objFormData.accordList) { accord.accordDetail.forEach((item) => { const labels = item.violationClause .split("-") .map((str) => str.trim()) .filter(Boolean); const illegalOptions = accord.illegalOptions || optionsMap.get(accord.violationAccord); const ruleIdList = []; let options = illegalOptions; for (const label of labels) { const option = options.find((opt) => opt.label === label); if (option) { ruleIdList.push(option.value); options = option.children; } } const elRuleList = [{ illegalValue: ruleIdList }]; const echoData = { gistValue: accord.violationAccordText, ruleList: elRuleList, illegalOptions: illegalOptions, basis: basisMap.get(accord.violationAccord), }; if (echoDataMap.has(accord.violationAccordText)) { // 如果已经存在相同键名的数据,则将其 elRuleList 值合并到已存在数据的 ruleList 中 const existingEchoData = echoDataMap.get(accord.violationAccordText); existingEchoData.ruleList.push(...elRuleList); } else { echoDataMap.set(accord.violationAccordText, echoData); } }); } // 将 Map 中的数据转为数组 this.gistList = Array.from(echoDataMap.values()); }, ``` 希望这个修改能够帮到你。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值