En mi método, muestro la lista de detalles del producto según la disponibilidad en diferentes tiendas. Para esto, estoy usando este tipo de enfoque.
for (let i = 0; i < this.prodList.length; i++) { let setContent = false; for (let j = 0; j < res.data.length; j++) { if (res.data[j].product === this.prodList[i].value) { this.detailList[i] = { product: this.prodList[i].value, content: res.data[j].content, shopName: res.data[j].shopName }; this.formData.addressList[i] = { product: this.prodList[i].value, content: res.data[j].content, shopName: res.data[j].shopName }; setContent = true; break; } } }¿Cómo usar buscar o filtrar en lugar de for loop?
El resultado es un mapa de prodList, y el ciclo interno hace exactamente lo que hace find, así que...
this.detailList = this.prodList.map(prod => { let resProd = res.data.find(r => r.product === prod.value); return { product: prod.value, content: resProd.content, shopName: resProd.shopName }; }); Parece que el código inicializa formData.addressList en una matriz con copias de los mismos objetos. Esta asignación podría realizarse como un efecto secundario dentro del mapa o como un segundo mapa.
this.formData.addressList = this.detailList.map(o => ({ ...o }));La respuesta de @danh debería cubrir su pregunta de bucle.
Para agregar la lista de detalles como lista de direcciones en su this.formData, puede usar
this.formData.append('addressList', detailList); Documentación
https://developer.mozilla.org/en-US/docs/Web/API/FormData/append