Versión alternativa para Object.values ​​()

Estoy buscando una versión alternativa para la function Object.values() .
Como se describe aquí, las funciones no son compatibles con Internet Explorer.

Al ejecutar el siguiente código de ejemplo:

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

Funciona tanto en Firefox como en Chrome, pero arroja el siguiente error en IE11:

El object no admite "valores" de propiedad o método

Aquí puedes probarlo: Fiddle .

Entonces, ¿qué sería una solución rápida?

Puede get una matriz de keys con Object.keys() y luego usar map() para get valores.

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

Dado que Object es una implementación ( no tan reciente), si desea admitir todos los browseres (AKA IE8 y siguientes), entonces necesita crear su propia function:

 function objectValues(obj) { var res = []; for (var i in obj) { if (obj.hasOwnProperty(i)) { res.push(obj[i]); } } return res; } 

PD: Acabo de notar la label ecmascript-6 . Por cierto, mantengo esta respuesta aquí, en caso de que alguien la necesite.

Puedes usar un polyfill:

 const valuesPolyfill = function values (object) { return Object.keys(object).map(key => object[key]); }; const values = Object.values || valuesPolyfill; console.log(values({ a: 1, b: 2, c: 3 }));