Alternative version for Object.values()
Since Object is a (not so) recent implementation, if you want to support all browsers (AKA IE11 and below), then you need to create your own function:
function objectValues(obj) {
var res = [];
for (var i in obj) {
if (Object.prototype.hasOwnProperty.call(obj, i)) {
res.push(obj[i]);
}
}
return res;
}
You can also modify this for Object.keys()
and Object.entries()
easily.
PS: Just noticed the ecmascript-6
tag. Btw I keep this answer here, just in case someone needs it.
Object.values() is part of the ES8(June 2017) specification. Using Cordova, I realized Android 5.0 Webview doesn't support it. So, I did the following, creating the polyfill function only if the feature is not supported:
if (!Object.values) Object.values = o=>Object.keys(o).map(k=>o[k]);
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])