Alex Fallenstedt Alex Fallenstedt - 4 months ago 325
Javascript Question

Uncaught TypeError: Object.values is not a function JavaScript

I have a simple object like the one below:

var countries =
{
"Argentina":1,
"Canada":2,
"Egypt":1,
};


I need to create two arrays. The first array is an array of all the keys from the object. I created this array by:

var labels = Object.keys(countries);


This works well. I obtain an array of countries. Now when I try to create an array from the values...

var labels = Object.values(countries);


I get this error:
Uncaught TypeError: Object.values is not a function JavaScript


I don't know what I am doing wrong. I console.log
countries
before I declare
labels
and after and the object remains the same. How do I properly use
Object.values()
?

Answer

.values is unsupported in many browsers - you can use .map to get an array of all the values:

var vals = Object.keys(countries).map(function(key) {
    return countries[key];
});

See official doc: https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Object/values