I have written this small function to get all keys and values of an object and store them into an array. The object might contain arrays as values...
Object { 0: [1,2,3,4] }
to [0,1,2,3,4]
converting all elements to integers
I wonder whether there is a faster/cleaner way to do so:
function flattenObject(obj) {
// Returns array with all keys and values of an object
var array = [];
$.each(obj, function (key, value) {
array.push(key);
if ($.isArray(value)) {
$.each(value, function (index, element) {
array.push(element);
});
}
else {
array.push(value);
}
});
return array
}
You could just concat all keys and values. (It does not solve the type casting to number for keys.)
var object = { 0: [1, 2, 3, 4] },
result = Object.keys(object).reduce(function (r, k) {
return r.concat(k, object[k]);
}, []);
console.log(result);