Map an array key value

Viewed 646

The key value of my array is another array. I want to filter only the array value.

This is my array:

const array = [{
    work: [{
      day: 'Monday',
      number: 8
    }]
  },
  {
    work: [{
      day: 'Tuesday',
      number: 5
    }]
  },
  {
    work: [{
      day: 'Saturday',
      number: 4
    }]
  },
]

My desired array is:

const desiredArray = [{
  day: 'Monday',
  number: 8
}, {
  day: 'Tuesday',
  number: 5
}, {
  day: 'Saturday',
  number: 4
}];

I have tried

const desiredArray  = Object.values(array)
const desiredArray  = Object.keys(array).map(item => array[item])

neither of which worked.

3 Answers

You can use .flatMap() to get the desired output:

const input = [{
  work: [{ day: 'Monday', number: 8 }]
}, {
  work: [{ day: 'Tuesday', number: 5 }]
}, {
  work: [{ day: 'Saturday', number: 4 }]
}];

const output = input.flatMap(({ work }) => work);

console.log(output);
.as-console-wrapper { max-height: 100% !important; top: 0; }

You can use map to return a new array from the given array.

const array = [{
    work: [{
      day: 'Monday',
      number: 8
    }]
  },
  {
    work: [{
      day: 'Tuesday',
      number: 5
    }]
  },
  {
    work: [{
      day: 'Saturday',
      number: 4
    }]
  },
]

const desired = array.map(item => item.work[0]);

console.log(desired);

Use map and flat.


array.map(Object.values).flat(2)

const array = [{
    work: [{
      day: 'Monday',
      number: 8
    }]
  },
  {
    work: [{
      day: 'Tuesday',
      number: 5
    }]
  },
  {
    work: [{
      day: 'Saturday',
      number: 4
    }]
  },
]

console.log(array.map(Object.values).flat(2))

Related