Proporcionará datos al verificar cada variant dentro de la matriz de variantes, mostrará todo el objeto si la condición coincide o si no está definida, pero en este código en particular, está creando una nueva matriz para cada elemento, algo como esto :- [{id: 'something'}] [{id: 'something'}] [{id: 'something'}] [{id: 'something'}] Quiero que tenga todo el resultado dentro de una matriz: -
[ {id: 'something'}, {id: 'something'}, {id: 'something'}, {id: 'something'} ] const mynewarr = []; const myimages = product_details.data.product.images; for(var i = 0; i < product_details.data.product.variants.length; i++) { const myvari = product_details.data.product.variants[i].image_id; const real = myimages.find(imageid => imageid.id == myvari); mynewarr.push(real); }Simplemente use una asignación de desestructuración para "desempaquetar" la matriz antes del empuje.
mynewarr.push(...real);Si entiendo correctamente, debes ir:
const newArray = product_details.data.product.variants.map((variant) => variant.image_id === 'your_condition' ? { id: variant.image_id } : undefined) newArray contendrá una matriz de objetos con los id.
Dado que sus myimages son una matriz de matrices, puede empujar el objeto accediendo al índice 0 del elemento filtrado (usando .find ). Si existe la posibilidad de que el método .find devuelva undefined , puede agregar una verificación condicional para enviar solo los elementos encontrados. Puede actualizar su código a algo como lo siguiente.
const mynewarr = []; const myimages = product_details.data.product.images; for(var i = 0; i < product_details.data.product.variants.length; i++){ const myvari = product_details.data.product.variants[i].image_id; const real = myimages.find(imageid => imageid.id === myvari) if(real){ mynewarr.push(real[0]); //Add only the object and not the sub array. } }