从对象数组中提取数据(稍微复杂的问题)

时间:2017-07-14 20:44:32

标签: javascript angularjs arrays object underscore.js

我有一个对象数组如下。

Array[0-2]
   0: Object
           Name: 'Rick'
           City: 'Sunnyvale'
           FactorJSONMap: "{"Id":"234","Country":"USA"}"
   1: Object
           Name: 'Diana'
           City: 'Santa Clara'
           FactorJSONMap: "{"Id":"124","Country":"USA"}"
   2: Object
           Name: 'Thiago'
           City: 'New Jeresy'
           FactorJSONMap: "{"Id":"673","Country":"USA"}"

我能够遍历元素' Name'和' City'正常。 但是有一个元素“因子JSONMap”'。这来自数据库。我一般都无法循环。

有人可以告诉我是否有办法将上述数据格式转换为以下格式。

请注意。 FactorJSONMap是动态的,可以有不同的元素。在这里它有' Id'和' City'目前。它可以拥有“城市”和“城市”。和'性'

有没有办法可以提取上面的数据并转换成这个简单的对象数组。

Array[0-2]
   0: Object
           Name: 'Rick'
           City: 'Sunnyvale'
           Id: '234'
           Country:'USA'
   1: Object
           Name: 'Diana'
           City: 'Santa Clara'
           Id: '124'
           Country:'USA'
   2: Object
           Name: 'Thiago'
           City: 'New Jeresy'
           Id: '673'
           Country:'USA'

1 个答案:

答案 0 :(得分:1)

您可以简单地使用JSON对象的parse方法将FactorJSONMap中的数据转换为对象格式,然后将其分配给数组中的父对象。一旦您遍历数组中的所有对象,返回的对象数组将在第一级中列出所有嵌套属性。

https://jsfiddle.net/4h72h6b8/3/

function traverseData(data) {
  for(let data_obj of data) {
  Object.assign(data_obj, JSON.parse(data_obj.FactorJSONMap));
  delete data_obj.FactorJSONMap;
  }
  return data;
};

在示例中,您将在控制台日志中看到结果。