Alternative version for Object.values()

user1170330 picture user1170330 · Mar 16, 2017 · Viewed 69.3k times · Source

I'm looking for an alternative version for the Object.values() function.
As described here the function is not supported in Internet Explorer.

When executing the following example code:

var obj = { foo: 'bar', baz: 42 };
console.log(Object.values(obj)); // ['bar', 42]

It works in both, Firefox and Chrome, but throws the following error in IE11:

Object doesn't support property or method "values"

Here you can test it: Fiddle.

So, what would be a quick fix?

Answer

Nenad Vracar picture Nenad Vracar · Mar 16, 2017

You can get array of keys with Object.keys() and then use map() to get values.

var obj = { foo: 'bar', baz: 42 };
var values = Object.keys(obj).map(function(e) {
  return obj[e]
})

console.log(values)

With ES6 you can write this in one line using arrow-functions.

var values = Object.keys(obj).map(e => obj[e])