Esta solución Javascript funcional utiliza Array.prototype.reduce():
['red', 'green', 'blue']
.reduce((hash, elem) => { hash[elem] = true; return hash }, {})
Parameter Details:
- devolución de llamada - Función para ejecutar en cada valor de la matriz.
- initialValue - Objeto a usar como primer argumento para la primera llamada de la devolución de llamada.
El tercer argumento para la devolución de llamada es el índice del elemento actual que se está procesando en la matriz. Así que si desea crear una tabla de búsqueda de elementos a su índice:
['red', 'green', 'blue'].reduce(
(hash, elem, index) => {
hash[elem] = index++;
return hash
}, {});
Devuelve:
Object {red: 0, green: 1, blue: 2}
Aparte de las primitivas, como cadenas, números, booleanos, etc. –
@Marcel: No soy estoy bastante seguro de cómo se manejan internamente, pero creo que también son objetos. –
Tampoco estoy seguro de cómo los motores JS los manejan internamente, pero las cadenas, números y booleanos definitivamente no son objetos de acuerdo con la [especificación ECMAScript] (http://ecma262-5.com/ELS5_Section_8.htm#Section_8). Por ejemplo, cuando se usan los métodos 'String', una primitiva de cadena se convierte temporalmente en un objeto, se llama al método y el objeto' String' se convierte de nuevo a una primitiva de cadena. También observe que todos los objetos deben evaluar a 'verdadero', mientras que los primitivos pueden evaluar' falso'. Por ejemplo: 'var yes = new Boolean (false); if (yes) alert ("I <3 JavaScript"); 'outputs' I <3 JavaScript' –