Estoy trabajando con el objeto de esta manera: -
{ 0: buyAmount: 16.664328043964396 buyAmountInUsd: 16.685266204095775 date: {date: '2021-12-07'} sellAmount: {USD: 500, INR: 35000} 1: buyAmount: 1004.7015442959262 buyAmountInUsd: 1005.9639175379324 date: {date: '2021-12-07'} sellAmount: {USD: 1000, INR: 79000} ...... y estoy tratando de hacer una nueva matriz usando useState hook con estos datos, pero el problema al que me enfrento es cómo filtrar datos y hacer una matriz casi similar con los mismos datos.
p.ej:-
0: [amount: 500, date: '2021-12-07'], 1: [amount: 1000, date: '2021-12-07'] El problema al que me enfrento es que no conozco el método para obtener datos como amount = sellAmount.USD y date = date.date
Pensé en probar el for...of Pero no creo que sea un buen éxito.
Puedes hacer esto con Array.map
const arr = [{ buyAmount: 16.664328043964396, buyAmountInUsd: 16.685266204095775, date: {date: '2021-12-07'}, sellAmount: {USD: 500, INR: 35000} },{ buyAmount: 1004.7015442959262, buyAmountInUsd: 1005.9639175379324, date: {date: '2021-12-07'}, sellAmount: {USD: 1000, INR: 79000} }] console.log( arr.map(initialValue => { return { amount: initialValue.sellAmount.USD, date: initialValue.date.date } }) )La mejor idea sería tener una matriz de objetos en lugar de una matriz de elementos de matriz.
let result = yourArray.map(each => ({ amount: each.sellAmount.USD, date: each.date.date }))Esto no está relacionado con ReactJS, solo el manejo nativo de objetos Javascript.
Si sus datos originales tienen la forma de un objeto, puede convertirlos en una matriz de esta manera:
const objData = { 0: {...}, 1: {...} }; const arrData = Object.entries(objData); // [[0, {...}], [1, {...}]];A partir de ahí, puede filtrar/mapear/ordenar su matriz con métodos de matriz nativos:
const reshapedArray = arrData.map(([key, value]) => { return { amount: value.sellAmount.USD, date: value.date.date, }; });Luego ordena:
const sortedArray = reshapedArray.sort((prev, next) => { return prev.amount - next.amount; // sort by amount ascending });Puede encadenar estas funciones de matriz y acortar un poco la sintaxis:
Object.entries(objData) .map(([_, { sellAmount, date: { date } }]) => ({ amount: sellAmount.USD, date })) .sort((a, b) => a.amount - b.amount);