so I have the following json.
{
"BTC": {
"available": 0.00024868,
"onOrder": 0,
"btcValue": 0.00024868,
"btcTotal": 0.00024868
},
"LTC": {
"available": 0,
"onOrder": 0,
"btcValue": 0,
"btcTotal": 0
},
"ETH": {
"available": 0,
"onOrder": 0,
"btcValue": 0,
"btcTotal": 0
},
"NEO": {
"available": 0,
"onOrder": 0,
"btcValue": 0,
"btcTotal": 0
},
"BNB": {
"available": 0.08943066,
"onOrder": 0,
"btcValue": 0.0004663808919,
"btcTotal": 0.0004663808919
}
}
I need to remove the items that don’t have a value in the “available” field (such as NEO and ETH and set the result in an array. Then remove the onOrder and btcTotal fields.
such as:
BTC 0.00024868 0.00024868
BNB 0.8943066 0.0004663808919
I am writing my little project in JS on NodeJS as a little hobby project. But, so far all I am able to get right is listing the JSON in the console.
Advertisement
Answer
Something like this might work:
const json = `{"BTC":{"available":0.00024868,"onOrder":0,"btcValue":0.00024868,"btcTotal":0.00024868},"LTC":{"available":0,"onOrder":0,"btcValue":0,"btcTotal":0},"ETH":{"available":0,"onOrder":0,"btcValue":0,"btcTotal":0},"NEO":{"available":0,"onOrder":0,"btcValue":0,"btcTotal":0},"BNB":{"available":0.08943066,"onOrder":0,"btcValue":0.0004663808919,"btcTotal":0.0004663808919}}`;
const data = JSON.parse(json);
const processed = Object.entries(data)
.filter(([, { available }]) => available > 0)
.map(([asset, { available, btcValue }]) => {
return { asset, available, btcValue };
});
const asArray = processed.map(Object.values);
console.table(processed);
console.log(asArray);
Object.entries returns an array of key-value pairs. Since it’s an array, you can:
- call
filtermethod to only keep items whereavailablewas greater than 0 - call
mapmethod to transform the filtered array of key-value pairs into an array of objects (where each object has properties:asset,available,btcValue)
You can get rid of asArray if you want, if it’s not useful. It’s just to give you an idea of what’s possible.