Estoy luchando con este problema. Tengo este objeto a continuación.
const originalData = { "price1": 100, "amount1": 17.46, "price2": 500, "amount2": 29, "price3": 700, "amount3": 40.74 }Quiero un nuevo objeto dentro de una matriz como esta a continuación.
const newData =[ {price:100, amount:17.46}, {price:500, amount:29}, {price:700, amount:40.74} ],Probé estos métodos: filtro/mapa/reducción y busqué en Google el problema durante años para llegar al resultado que quería. pero no pude conseguirlo. por favor dime como puedo solucionar este problema.
Suponiendo que los números de las claves son consecutivos, puede dividir la cantidad de claves por 2 para obtener la cantidad de objetos y crear la matriz usando Array#map o Array.from con las claves del mismo número.
const originalData = { "price1": 100, "amount1": 17.46, "price2": 500, "amount2": 29, "price3": 700, "amount3": 40.74 } let res = [...Array(Object.keys(originalData).length/2)] .map((_,i)=>({price: originalData[`price${i+1}`], amount: originalData[`amount${i+1}`]})); console.log(res);Simplemente puede lograrlo usando esta lógica :
const originalData = { "price1": 100, "amount1": 17.46, "price2": 500, "amount2": 29, "price3": 700, "amount3": 40.74 }; const arr = []; Object.keys(originalData).forEach((key, index) => { if (originalData[`price${index+1}`]) { const obj = {}; obj.price = originalData[`price${index+1}`] obj.amount = originalData[`amount${index+1}`] arr.push(obj); } }); console.log(arr);