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. } }