tengo una matriz
const arr = [ { "id": 1, "name": "Bitcoin", "symbol": "BTC", "slug": "bitcoin", "rank": 1, "is_active": 1, "first_historical_data": "2013-04-28T18:47:21.000Z", "last_historical_data": "2022-02-18T11:39:00.000Z", "platform": null }, { "id": 2, "name": "Litecoin", "symbol": "LTC", "slug": "litecoin", "rank": 20, "is_active": 1, "first_historical_data": "2013-04-28T18:47:22.000Z", "last_historical_data": "2022-02-18T11:39:00.000Z", "platform": null } ]
Y quiero transformar la matriz a esto
{ "BTC": "Bitcoin", "LTC": "Litecoin", }
¿Hay una mejor manera que esta?
const result = {} arr.reduce((accum, val) => { Object.assign(result, { [val.symbol]: val.name }); }, {}) console.log(result)
Use Object.entries()
y cada objeto que los devolverá como una matriz de matrices; cada sub-matriz será un par clave/valor ( [key, value]
) y luego use Object.assign()
para crear un nuevo objeto ( {[key]: value}
) para regresar. Luego aplánelo para que estén todos en una matriz.
const arr=[{id:1,name:"Bitcoin",symbol:"BTC",slug:"bitcoin",rank:1,is_active:1,first_historical_data:"2013-04-28T18:47:21.000Z",last_historical_data:"2022-02-18T11:39:00.000Z",platform:null},{id:2,name:"Litecoin",symbol:"LTC",slug:"litecoin",rank:20,is_active:1,first_historical_data:"2013-04-28T18:47:22.000Z",last_historical_data:"2022-02-18T11:39:00.000Z",platform:null}]; const conv = array => { let objects = array.map(obj => Object.entries(obj).map(([key, val]) => Object.assign({}, {[key]: val}))); return objects.flat(); }; console.log(conv(arr));
let arr = [ { "id": 1, "name": "Bitcoin", "symbol": "BTC", "slug": "bitcoin", "rank": 1, "is_active": 1, "first_historical_data": "2013-04-28T18:47:21.000Z", "last_historical_data": "2022-02-18T11:39:00.000Z", "platform": null }, { "id": 2, "name": "Litecoin", "symbol": "LTC", "slug": "litecoin", "rank": 20, "is_active": 1, "first_historical_data": "2013-04-28T18:47:22.000Z", "last_historical_data": "2022-02-18T11:39:00.000Z", "platform": null } ] // As suggested, here it is without having to create an initial array let alternativeArray = arr.map((val) => { return {[val.symbol]: val.slug} }) console.log(alternativeArray)
Aquí está la respuesta a por qué la clave del objeto se establece en ese formato: Javascript establece la clave del objeto por variable
La respuesta es
Object.fromEntries(arr.map(({symbol, name}) => [symbol, name]))