Home > OS >  How can I Improve my logic by using forEach, not for loop in Javascript
How can I Improve my logic by using forEach, not for loop in Javascript

Time:05-21

Please check my code first

I used axios.all (GET method).

.then((res) => {
  let everyDataArray = [];
  
  console.log(res); // output = [ {response}, {response} ]    

  for(let i=0; i < res.length; i  ) {
    everyDataArray.push(...res[i].response)
  }
})

Right now, I'm using for loop for combining all the responses to an array.

However, What I'm trying to do is using forEach, not for.

I have checked https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/forEach ,

but still working on how. Thank you.

CodePudding user response:

Really what you want is to use map (https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map) because you want to transform one array into another.

To be clear, forEach is for the case when you want to apply a function to each item to use for side effects (like printing), rather than collecting the return values.

CodePudding user response:

you can simply use map.

.then((res) => {
  console.log(res); // output = [ {response}, {response} ]    
  let everyDataArray = res.map(item => item.response);
})

CodePudding user response:

Your code could look something like the following:

.then((res) => {
  let everyDataArray = res.reduce((a,c)=>(a.push(...c.response),a),[]);
  // ...
  console.log(everyDataArray);
})

I used .reduce() instead of .map() as the resulting array will be of different length compared to the input array.

  • Related