【问题标题】:editing a JSON in JS and putting it in an array在 JS 中编辑 JSON 并将其放入数组中
【发布时间】:2021-06-09 18:20:46
【问题描述】:

所以我有以下 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
}
}

我需要删除“可用”字段中没有值的项目(例如NEO和ETH,并将结果设置为数组。然后删除onOrder和btcTotal字段。

如:

比特币 0.00024868 0.00024868

BNB 0.8943066 0.0004663808919

我在 NodeJS 上用 JS 编写我的小项目作为一个小爱好项目。但是,到目前为止,我能做的只是在控制台中列出 JSON。

【问题讨论】:

  • Object.entries() 将为您提供一个 [[key,value],...etc] 数组,您可以 .filter 将项目作为属性或输出。

标签: javascript node.js json


【解决方案1】:

这样的事情可能会奏效:

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 返回一个键值对数组。由于它是一个数组,您可以:

  • 调用filter方法只保留available大于0的项目
  • 调用map方法将过滤后的键值对数组转换为对象数组(其中每个对象都有属性:assetavailablebtcValue

如果你愿意,如果它没有用,你可以去掉asArray。这只是为了让您了解可能的情况。

【讨论】:

    猜你喜欢
    • 2012-06-04
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多