【问题标题】:Best way to transform data转换数据的最佳方式
【发布时间】:2017-09-19 02:36:29
【问题描述】:

我的 nodejs 应用程序中有一个供应商 API 调用,它返回各种对象,以下是 JSON 中一个对象的示例:

[{
"id": 365467865567,
"type": "PERSON",
"created_time": 1492809120,
"updated_time": 1492809542,
"last_contacted": 1492809128,
"properties": [
    {
    "type": "SYSTEM",
    "name": "phone",
    "value": "123456789"
    },
    {
    "type": "SYSTEM",
    "name": "first_name",
    "value": "Test2"
    },
    {
    "type": "SYSTEM",
    "name": "last_name",
    "value": "You"
    },
    {
    "type": "CUSTOM",
    "name": "utm_medium",
    "value": "email"
    }
]
}]

这种格式的数据使用起来不太方便,需要转置为key,value格式。类似于:

[{
"id": 365467865567,
"type": "PERSON",
"created_time": 1492809120,
"updated_time": 1492809542,
"last_contacted": 1492809128,
"properties":
    {
    "phone": "123456789",
    "first_name": "Test2",
    "last_name": "You",
    "utm_medium": "email"
    }
}]

最有效的方法是什么?

【问题讨论】:

  • 我感觉您不是在寻找最有效的方式来做到这一点,而是在寻找any的方式来做到这一点; )

标签: javascript node.js api vendor


【解决方案1】:

尝试遍历属性并重新分配变量。

var array = [{
  "id": 365467865567,
  "type": "PERSON",
  "created_time": 1492809120,
  "updated_time": 1492809542,
  "last_contacted": 1492809128,
  "properties": [{
    "type": "SYSTEM",
    "name": "phone",
    "value": "123456789"
  }, {
    "type": "SYSTEM",
    "name": "first_name",
    "value": "Test2"
  }, {
    "type": "SYSTEM",
    "name": "last_name",
    "value": "You"
  }, {
    "type": "CUSTOM",
    "name": "utm_medium",
    "value": "email"
  }]
}];

array.forEach(function(obj) {
  var properties = {};
  obj.properties.forEach(function(prop) {
    properties[prop.name] = prop.value;
  });
  obj.properties = properties;
});

https://jsfiddle.net/hycg5r80/3/

【讨论】:

  • 一个for 和一个嵌套的forEach? - 这有点.. 非正统 - 为什么不 2 for 或只是 2 forEach 代替?
  • 我会解决的。主要是因为我一开始没有意识到 json 对象是一个数组(我的错误)。
【解决方案2】:

这是一种方法,如果最有效,但它很简短。

thing[0].properties = thing[0].properties.reduce( (p, n) => ( 
  n[p.name] = p.value;
  return n;
), {});

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2022-08-17
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2020-06-05
    相关资源
    最近更新 更多