0

Here is my object:

const arr = [
  { name: 'Breaking Bad S01E07' },
  { name: 'Breaking Bad S01E06' },
  { name: 'Dexter S01E05' },
  { name: 'Dexter S01E02' },
  { name: 'Dexter S01E07' },
];

I want to extract just values and I used Object.values but it don't change.

Here is my code:

val = Object.values(arr);
console.log(val);

But what I get is exactly the same without Object.values. It doesn't return values. I returns keys + values.

I used map on it cuz it is an array of objects but it returns undefined!

const map = arr.map((x) => {
  Object.values(x);
});
console.log(map);

here is what I get:

[ undefined, undefined, undefined, undefined, undefined ]
Fabdol
  • 109
  • 1
  • 8

4 Answers4

0

You will need to map and then destructure the name from each object.

const arr = [
  { name: 'Breaking Bad S01E07' },
  { name: 'Breaking Bad S01E06' },
  { name: 'Dexter S01E05' },
  { name: 'Dexter S01E02' },
  { name: 'Dexter S01E07' },
];

const values = arr.map(({ name }) => name);

console.log(values);

If you want all the values without their keys, you could try reducing the values.

const arr = [
  { name: 'Breaking Bad S01E07' },
  { name: 'Breaking Bad S01E06' },
  { name: 'Dexter S01E05' },
  { name: 'Dexter S01E02' },
  { name: 'Dexter S01E07' },
];

const values = arr.reduce((acc, obj) => [...acc, ...Object.values(obj)], []);

console.log(values);
Mr. Polywhirl
  • 42,981
  • 12
  • 84
  • 132
0

The map function should always return a value.
You can change your map function in this way.

const map = arr.map((x) => Object.values(x));
console.log(map);
Motoralfa
  • 450
  • 3
  • 10
0

You are not returning anything from map callback function, hence, it populates the resultant array with undefined

const arr = [
  { name: 'Breaking Bad S01E07' },
  { name: 'Breaking Bad S01E06' },
  { name: 'Dexter S01E05' },
  { name: 'Dexter S01E02' },
  { name: 'Dexter S01E07' },
];

// Using object.values

const val = arr.map(item => Object.values(item)[0]);

// OR Accessing value directly
const values = arr.map(item => item.name)


console.log(values, val);
Kanishk Anand
  • 1,686
  • 1
  • 7
  • 16
0

The callback function in map() needs to return something.

const map = arr.map((x) => {
  return Object.values(x);
});

Or you can use the shorthand format that automatically returns an expression by leaving out the {} around the body:

const map = arr.map((x) => Object.values(x));
Barmar
  • 741,623
  • 53
  • 500
  • 612