0

Tengo el siguiente array de objetos:

[
 {'nombre': u'0%', 'id': 1L},
 {'nombre': u'IVA 12%', 'id': 2L},
 {'nombre': u'IVA 14%', 'id': 3L},
 {'nombre': u'NO OBJETO DE IMPUESTO', 'id': 4L},
 {'nombre': u'EXCENTO DE IVA', 'id': 5L}
]

el cual deseo convertir a la siguiente forma:

{'1':'0%', '2':'IVA 12%'......}

Quizá alguna idea por donde comenzar de antemano muchas gracias.., La key, es el valor del ID, que retorno del Json.

Pablo Lozano
  • 45,934
  • 7
  • 48
  • 87
Diego Avila
  • 5,306
  • 2
  • 16
  • 40
  • 3
    [JSON no es Objeto](https://es.stackoverflow.com/questions/164943/cu%C3%A1l-es-la-diferencia-entre-json-y-un-objeto-en-javascript), lo que muestras es un objeto, y falta agregar el codigo que intentastes – JackNavaRow Jan 16 '19 at 17:19
  • Quizá puedas intentar: const mutated = {}; array.forEach (i => { mutated [i.id] = i. nombre; }); – Daniel García Jan 16 '19 at 18:05

3 Answers3

3

Mediante Array#map puedes transformar las entradas para retornar una nueva modificada.

Ejemplo

const obj = [
 {'nombre': '0%', 'id': 1},
 {'nombre': 'IVA 12%', 'id': 2},
 {'nombre': 'IVA 14%', 'id': 3},
 {'nombre': 'NO OBJETO DE IMPUESTO', 'id': 4},
 {'nombre': 'EXCENTO DE IVA', 'id': 5 }
].map(o => ({
  [o.id]: o.nombre
}));

console.log(obj);
gugadev
  • 18,776
  • 1
  • 24
  • 49
1

Puedes hacerlo de la siguiente forma:

var lista = [
    {'nombre': '0%', 'id': '1L'},
    {'nombre': 'IVA 12%', 'id': '2L'},
    {'nombre': 'IVA 14%', 'id': '3L'},
    {'nombre': 'NO OBJETO DE IMPUESTO', 'id': '4L'},
    {'nombre': 'EXCENTO DE IVA', 'id': '5L'}
];

var final  = {};
for (var valor of lista) { // Iteramos por la lista
    valor['id'] = valor['id'].slice(0, -1); // Quitamos la 'L'
    final[valor['id']] = valor['nombre']; // Guardamos en { id: valor }
}
console.log(final); // {1: "0%", 2: "IVA 12%", 3: "IVA 14%", ... }

Fíjate que cambié el formato de la lista, ya que valores como u'0%' o 1L estaban mal formateados. Aquí puedes ver el código en acción: https://stackblitz.com/edit/js-5wulvb?file=index.js

JCAguilera
  • 982
  • 4
  • 15
0

Intenta esto:

var obj ={
 {'nombre': u'0%', 'id': 1L},
 {'nombre': u'IVA 12%', 'id': 2L},
 {'nombre': u'IVA 14%', 'id': 3L},
 {'nombre': u'NO OBJETO DE IMPUESTO', 'id': 4L},
 {'nombre': u'EXCENTO DE IVA', 'id': 5L}
};
var myJSON = JSON.stringify(obj);

El método JSON.stringify() convierte un valor dado en javascript a una cadena JSON, opcionalmente reemplaza valores si es especificada la función de reemplazo, o si se especifican las propiedades mediante un array de reemplazo.