格式化扩展的JSON数据

时间:2018-01-05 10:26:11

标签: javascript json object

我有一个像这样的JSON对象。与JSON.stringify(Object)一起使用时,它看起来像这样。

 "[
    ["Individual Id","Individual Last Name","Individual First Name","Individual Middle Name"],
    ["1268933","mrs","jeanine","marie"]
    ["1268934","mr","jasmine","curry"]
 ]"

以下格式重新格式化数据的最快方法是什么。

[
{
    "Individual Id": "1268933",
    "Individual Last Name": "mrs",
    "Individual First Name": "jeanine",
    "Individual Middle Name": "marie"
},
{
    "Individual Id": "1268934",
    "Individual Last Name": "miss",
    "Individual First Name": "jasmine",
    "Individual Middle Name": "curry"
}
]

6 个答案:

答案 0 :(得分:1)

你可以迭代两次。一旦在包含值(数据)的数组上,在内部迭代第一个数组中的键。

var arr = [
    ["Individual Id","Individual Last Name","Individual First Name","Individual Middle Name"],
    ["1268933","mrs","jeanine","marie"],
    ["1268934","mr","jasmine","curry"]
 ];
 var newArr = [];
 for(var i = 1; i < arr.length; i++){
  var obj = {};
  for(var j=0; j < arr[0].length; j++){
    obj[arr[0][j]] = arr[i][j];
  }
  newArr.push(obj);
 }
 console.log(newArr);

答案 1 :(得分:1)

您可以使用Array.prototype.reduce并根据需要创建对象:

const arr = [
  ["Individual Id","Individual Last Name","Individual First Name","Individual Middle Name"],
  ["1268933","mrs","jeanine","marie"],
  ["1268934","mr","jasmine","curry"]
]

const result = arr.reduce((prev, curr, index) => {
  if (index === 0) {
    return prev
  }

  return [
    ...prev,
    {
      [arr[0][0]]: curr[0],
      [arr[0][1]]: curr[1],
      [arr[0][2]]: curr[2],
      [arr[0][3]]: curr[3],
    }
  ]
}, [])

console.log(result)

答案 2 :(得分:1)

如果您可以使用ES6功能(解构和休息运算符):

&#13;
&#13;
var datas = [["Individual Id","Individual Last Name","Individual First Name","Individual Middle Name"], ["1268933","mrs","jeanine","marie"],["1268934","mr","jasmine","curry"]];

var [ fields, ...rows] = datas;
var result = rows.map(values => values.reduce((item, value, index) => (item[fields[index]] = value, item), {}));

console.log(result);
&#13;
&#13;
&#13;

答案 3 :(得分:1)

您可以array#shift第一个数组,然后使用array#maparray#reduce生成数组。

var arr = [["Individual Id","Individual Last Name","Individual First Name","Individual Middle Name"],["1268933","mrs","jeanine","marie"],["1268934","mr","jasmine","curry"]],
  headers = arr.shift(),
  result = arr.map(a => a.reduce((r,v,i) => (r[headers[i]] = v, r), {}));
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

答案 4 :(得分:1)

&#13;
&#13;
var a = [
    ["Individual Id","Individual Last Name","Individual First Name","Individual Middle Name"],
    ["1268933","mrs","jeanine","marie"],
    ["1268934","mr","jasmine","curry"]
 ];

var values = a.splice(1,a.length-1);
var keys = a[0];
var result = [];
for(var i = 0,m=values.length;i<m;i++)
{
    var obj = {};
    for(var j=0,n=keys.length;j<n;j++)
    {
        obj[keys[j]] = values[i][j];
    }
    result.push(obj);
}
console.log(result);
&#13;
&#13;
&#13;

答案 5 :(得分:1)

使用mapreduce

var keys = inputArr[ 0 ];
var output = inputArr.slice(1).map( function( item ){
   return Object.keys( keys ).reduce( ( a, c ) => ( a[ keys[ c ] ] = item[c], a ), {});   
});

<强>演示

var inputArr = [
    ["Individual Id","Individual Last Name","Individual First Name","Individual Middle Name"],
    ["1268933","mrs","jeanine","marie"],
    ["1268934","mr","jasmine","curry"]
];
var keys = inputArr[ 0 ];
var output = inputArr.slice(1).map( function( item ){
   return Object.keys( keys ).reduce( ( a, c ) => ( a[ keys[ c ] ] = item[c], a ), {});   
});
console.log( output );