在json中检索唯一键的所有值

时间:2015-05-15 18:21:22

标签: javascript json

我有

var data = 

[
   {
      "id":"07907313",
      "type":"car",
      "year":"1999"
   },
   {
      "id":"0797096",
      "type":"boat",
      "year":"2013"
   },
   {
      "id":"2341353",
      "type":"plane",
      "year":"2015"
   }
]

我做

var jsonAsString = JSON.stringify(data); 
var jsonData = JSON.parse(jsonAsString);

我想提取每个唯一键(id,type,year)值并使用以下格式创建另一个var:

[
    {"name": "id", "data": ["07907313","0797096","2341353"]},
    {"name": "type", "data": ["car","boat","plane"]},
    {"name": "year", "data":["1999","2013","2015"]}
]

我很难获得我想要的输出。任何帮助将不胜感激。

2 个答案:

答案 0 :(得分:1)

您希望首先浏览现有的每个项目,提取数据并将其合并到一个对象中。像这样:



var data = [{
  "id": "07907313",
  "type": "car",
  "year": "1999"
}, {
  "id": "0797096",
  "type": "boat",
  "year": "2013"
}, {
  "id": "2341353",
  "type": "plane",
  "year": "2015"
}];

var results = {};

data.forEach(function(item) {
  Object.keys(item).forEach(function(key) {
    results[key] = results[key] || [];
    results[key].push(item[key]);
  });
});

document.getElementById('r').textContent = JSON.stringify(results);

<pre id="r"></pre>
&#13;
&#13;
&#13;

答案 1 :(得分:0)

您可以使用地图功能来实现此目的

var res = [{"name": "id", "data": data.map(function (e) {return e.id;})}, 
 {"name": "type", "data": data.map(function (e) {return e.type;})}, 
 {"name": "year", "data": data.map(function (e) {return e.year;})}]

您可以查看更多内容 https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Array/map

此致