Estoy tratando de vincular valores solo para ver. mi código está funcionando hasta ahora. pero estoy repitiendo el mismo forEach anidado 3 veces. por lo que Sonarcube definitivamente lo marcará como duplicado. ¿Alguien podría decirme cómo evitar la repetición de código?
¿Hay alguna forma de optimizar los códigos repetidos a continuación y convertirlos como una función genérica en JavaScript?
response.mainDish.forEach(element => { this.selectedMainDish.forEach(ele => { if (ele?.id === element.id) { this.bindMainDish.push(ele?.mainDish); } }); }); response.sideDish1?.forEach(element => { this.selectedSideDish1List.forEach(ele => { if (ele.id === element.id) { this.bindSideDish1.push(ele.sideDish1); } }); }); response.sideDish2?.forEach(element => { this.selectedSideDish2.forEach(ele => { if (ele.id === element.id) { this.bindSideDish2.push(ele.sideDish2); } }); });Puede hacer una función genérica usando nombres de propiedades dinámicas
let functionDoThis = function( mainDish , selectedMainDish, bindMainDish){ response[mainDish]?.forEach(element => { this[selectedMainDish]?.forEach(ele => { if (ele?.id === element.id) { this[bindMainDish]?.push(ele[mainDish]); } }); }); } functionDoThis('mainDish', 'selectedMainDish' , 'bindMainDish'); functionDoThis('sideDish1', 'selectedSideDish1List' , 'bindSideDish1'); functionDoThis('sideDish2', 'selectedSideDish2' , 'bindSideDish2');puede ser algo asi...
const dish_keys = [ {dish:'mainDish', selected:'selectedMainDish', bind:'bindMainDish' } , {dish:'sideDish1', selected:'selectedSideDish1List', bind:'bindSideDish1' } , {dish:'sideDish2', selected:'selectedSideDish2', bind:'bindSideDish2' } ] for (let {dish,selected,bind} of dish_keys) response[dish]?.forEach(element => this[selected]?.forEach(ele =>{ if (ele?.id === element.id) this[bind]?.push(ele[dish]) } ) );