Quiero usar los datos json para obtener un objeto del objeto json donde free tiene un valor mayor que 0 y empujar todo el objeto en una nueva matriz, por ejemplo, quiero empujar {"free": 1, "used": 0," total": 0, "usd_price": 0,} en una matriz y obtenga un resultado como este [{"free": 1, "used": 0,"total": 0, "usd_price": 0},{ "gratis": 1, "usado": 0,"total": 0, "precio_usd": 0}]
{ "success": true, "messsage": "", "data": { "BIT": { "free": 0, "used": 0, "total": 0, "usd_price": 0, "usd_val": 0, "percent_change_24h": 0, "usd_pnl_24h": 0, "name": "", "logo": "https://www.trailingcrypto.com/assets/img/default-coin.png", "portfolio_share": 0 }, "BTC": { "free": 0, "used": 0, "total": 0, "usd_price": 38400.82298054895, "usd_val": 0, "percent_change_24h": 0, "usd_pnl_24h": 0, "name": "Bitcoin", "logo": "https://s2.coinmarketcap.com/static/img/coins/128x128/1.png", "portfolio_share": 0 }, "DOT": { "free": 0, "used": 0, "total": 0, "usd_price": 20.07605927484185, "usd_val": 0, "percent_change_24h": 0, "usd_pnl_24h": 0, "name": "Polkadot", "logo": "https://s2.coinmarketcap.com/static/img/coins/128x128/6636.png", "portfolio_share": 0 } } }Lo que quiere hacer aquí es utilizar el método de filtro de Javascript para obtener un subarreglo que pase una condición determinada, que en su caso es asegurarse de que el valor de free sea mayor que 1. Sin embargo, el método de filtro solo se puede aplicar en una array , pero los datos que ha proporcionado están en forma de object .
Entonces, antes de aplicar el método de filter , convertiremos este objeto en una matriz usando Object.values() .
Object.values(json.data)Una vez que tenga los datos en un formato de matriz, ahora podemos aplicar el método de filtro para obtener un subconjunto relevante de la matriz original (nuevamente, que en su caso es el elemento donde el valor de libre es mayor que 1)
Object.values(json.data).filter((data) => data.free > 1)¡Y ahora debería funcionar! Aquí está el código de trabajo completo a continuación
const json = { success: true, messsage: "", data: { BIT: { free: 0, used: 0, total: 0, usd_price: 0, usd_val: 0, percent_change_24h: 0, usd_pnl_24h: 0, name: "", logo: "https://www.trailingcrypto.com/assets/img/default-coin.png", portfolio_share: 0, }, BTC: { free: 0, used: 0, total: 0, usd_price: 38400.82298054895, usd_val: 0, percent_change_24h: 0, usd_pnl_24h: 0, name: "Bitcoin", logo: "https://s2.coinmarketcap.com/static/img/coins/128x128/1.png", portfolio_share: 0, }, DOT: { free: 0, used: 0, total: 0, usd_price: 20.07605927484185, usd_val: 0, percent_change_24h: 0, usd_pnl_24h: 0, name: "Polkadot", logo: "https://s2.coinmarketcap.com/static/img/coins/128x128/6636.png", portfolio_share: 0, }, }, }; const free = Object.values(json.data).filter((data) => data.free > 1); console.log(free)coloque los objetos en la matriz, luego recorra la matriz y verifique si libre es igual a uno, luego, si es verdadero, empuje el objeto dentro de la segunda matriz.
let dataFilter = []; const res = { success: true, messsage: "", data: { BIT: { free: 0, used: 0, total: 0, usd_price: 0, usd_val: 0, percent_change_24h: 0, usd_pnl_24h: 0, name: "", logo: "https://www.trailingcrypto.com/assets/img/default-coin.png", portfolio_share: 0, }, BTC: { free: 0, used: 0, total: 0, usd_price: 38400.82298054895, usd_val: 0, percent_change_24h: 0, usd_pnl_24h: 0, name: "Bitcoin", logo: "https://s2.coinmarketcap.com/static/img/coins/128x128/1.png", portfolio_share: 0, }, DOT: { free: 1, used: 0, total: 0, usd_price: 20.07605927484185, usd_val: 0, percent_change_24h: 0, usd_pnl_24h: 0, name: "Polkadot", logo: "https://s2.coinmarketcap.com/static/img/coins/128x128/6636.png", portfolio_share: 0, }, }, } Object.values(res.data).map((item) => { if (item?.free === 1) { console.log("ok"); dataFilter.push(item); } }); // now you have access data console.log(dataFilter)