我有一个像这样的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"
}
]
答案 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功能(解构和休息运算符):
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;
答案 3 :(得分:1)
您可以array#shift
第一个数组,然后使用array#map
和array#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)
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;
答案 5 :(得分:1)
使用map
和reduce
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 );