Tengo un objeto JSON extremadamente grande estructurado así:
{A : 1, B : 2, C : 3, D : 4}
Necesito una función que pueda intercambiar los valores con claves en mi objeto y no sé cómo hacerlo. Necesitaría una salida como esta:
{1 : A, 2 : B, 3 : C, 4 : D}
¿Hay alguna forma de que pueda hacer esto? ¿Crearía manualmente un nuevo objeto donde todo se intercambia?
Gracias

function swap(obj) {return new Map(Object.entries(x).map([k, v] => [v, k]))}Respuestas:
Ejemplo aquí FIDDLE no olvide encender su consola para ver los resultados.
Versiones ES6 :
O usando Array.reduce () y Object.keys ()
O usando Array.reduce () y Object.entries ()
fuente
puede usar la función lodash _.invertir también puede usar multivlaue
fuente
Usando ES6:
fuente
Obtenga las claves del objeto y luego use la función de reducción de Array para revisar cada clave y establecer el valor como clave y la clave como valor.
fuente
En ES6 / ES2015 puede combinar el uso de Object.keys y reducir con la nueva función Object.assign , una función de flecha y un nombre de propiedad calculado para una solución de declaración única bastante sencilla.
Si está transpilando usando el operador de extensión de objetos (etapa 3 al momento de escribir esto), eso simplificará las cosas un poco más.
Finalmente, si tiene Object.entries disponibles (etapa 4 a partir de la escritura), puede limpiar la lógica un poco más (IMO).
fuente
Ahora que tenemos Object.fromEntries:
o
fuente
Como complemento de las respuestas de @joslarson y @jPO:
Sin necesidad de ES6, puede usar y el operador de coma :
Object.keysArray.reduceAlgunos pueden encontrarlo feo, pero es "un poco" más rápido ya
reduceque no distribuye todas las propiedades deobjen cada bucle.fuente
forEach,maporeduce. Hice esta respuesta para tener una solución de una sola línea sin la necesidad de es6 y seguir siendo relevante en términos de velocidad / efectividad.Tratar
Mostrar fragmento de código
fuente
El más corto que se me ocurrió usando ES6 ..
fuente
Usando Ramda :
fuente
Creo que es mejor hacer esta tarea usando un módulo npm, como
invert-kv.invert-kv : invierte la clave / valor de un objeto. Ejemplo: {foo: 'bar'} → {bar: 'foo'}
https://www.npmjs.com/package/invert-kv
fuente
Con Ramda puro en un estilo puro y sin puntos:
O, con una versión ES6 un poco más complicada, todavía puramente funcional:
fuente
fuente
objectviene estomapse supone que debe hacer, lo estás usando aquí comoforEachAquí hay una implementación funcional pura de voltear
keysyvaluesen ES6:Mecanografiado
JavaScript
fuente
Esto puede hacer que su objeto,
{A : 1, B : 2, C : 3, D : 4}parezca una matriz, por lo que puede tenerfuente
Aquí hay una opción que intercambiará claves con valores pero no perderá duplicados, si su objeto es: {a: 1, b: 2, c: 2}, siempre devolverá una matriz en la salida:
fuente