JavaScript, transform object into array
With jQuery you could use the each function:
var obj = {
"Mike": 24,
"Peter": 23,
"Simon": 33,
"Tom": 12,
"Frank": 31
}
myArray=new Array();
$.each(obj, function(key, value) {
myArray.push(value);
});
Use Object.values it will return array.
Object.values(obj) // [24, 23, 33, 12, 31]
The obvious way would be to do a for-in loop, as @quixoto suggests, but just for the record, and since you are looking for a built-in way, you could pair the new ECMAScript 5 methods Object.keys
and Array.prototype.map, available on latest browsers:
function valuesToArray(obj) {
return Object.keys(obj).map(function (key) { return obj[key]; });
}
UPDATE: ES2017 introduced the Object.values
method, which does exactly what you want.
Additionally, ES2017 adds another often useful method, Object.entries
. This method returns an array of key-value pairs.
const obj = {
"Mike": 24,
"Peter": 23,
"Simon": 33,
"Tom": 12,
"Frank": 31
};
const values = Object.values(obj);
const entries = Object.entries(obj);
console.log('values:', values);
console.log('entries:', entries);
There's no built-in way to do this anywhere. The following does what you suggest, and may be "shortened" into more clever functional-programming versions depending on your library, but they'll all have the same efficiency.
function valuesToArray(obj) {
var result = [];
for (var key in obj) {
if (obj.hasOwnProperty(key)) {
result.push(obj[key]);
}
}
return result;
}