'How to push all the objects inside an array

It will give data by checking for each variant inside the variant array, it show all the object if the condition matched or undefined if not, but in this particular code, it is creating a new array for each item, something like this :- [{id: 'something'}] [{id: 'something'}] [{id: 'something'}] [{id: 'something'}] I want it to have all the result inside one array:-

[
  {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);
        }


Solution 1:[1]

Just use a destructuring assignment to "unpack" the array before the push.

mynewarr.push(...real);

Solution 2:[2]

If I understand correctly you need to go:

const newArray = product_details.data.product.variants.map((variant) => variant.image_id === 'your_condition' ? { id: variant.image_id } : undefined)

The newArray will contain an array of objects with the ids.

Solution 3:[3]

Since your myimages is an array of array, you can push the object by accessing the 0th index of the filtered item(using .find). If there's a possibility that the .find method might return undefined you can add a conditional check to push only the found items. You can update your code to something like the below.

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

Sources

This article follows the attribution requirements of Stack Overflow and is licensed under CC BY-SA 3.0.

Source: Stack Overflow

Solution Source
Solution 1 waken22
Solution 2 Yogev D.
Solution 3 Prajwal Kulkarni