3 回答

TA貢獻(xiàn)1864條經(jīng)驗(yàn) 獲得超6個(gè)贊
您需要在第一個(gè)循環(huán)中使用新對(duì)象(引用),否則您會(huì)為每一行獲得相同的對(duì)象。
var data = [ ['first_name', 'second_name', 'sex'], ['Jacob', 'David', 'M'], ['Kathryn', 'Gardener', 'F'], ['Jamaal', 'Dave', 'Unknown']],
result = [],
i, j,
object;
for (i = 0; i < data.length; i++) {
object = {}; // take a new object
for (j = 0; j < data[i].length; j++) { // start from zero
object[data[0][j]] = data[i][j]; // use j as last key
}
result.push(object);
}
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }
一個(gè)更短的方法Object.fromEntries。
const
getObjects = ([header, ...data]) => data.map(values =>
Object.fromEntries(values.map((value, index) => [header[index], value])));
var data = [['first_name', 'second_name', 'sex'], ['Jacob', 'David', 'M'], ['Kathryn', 'Gardener', 'F'], ['Jamaal', 'Dave', 'Unknown']],
result = getObjects(data);
console.log(result);
.as-console-wrapper { max-height: 100% !important; top: 0; }

TA貢獻(xiàn)1840條經(jīng)驗(yàn) 獲得超5個(gè)贊
var data = [
['first_name', 'second_name', 'sex'],
['Jacob', 'David', 'M'],
['Kathryn', 'Gardener', 'F'],
['Jamaal', 'Dave', 'Unknown']
]
function createObject(arr){
var arr2 = [];
keysArr = arr[0];
arr.splice(0,1);
arr.forEach(function(x,i){
arr2[i] = {};
arr[i].forEach(function(y,j){
arr2[i][keysArr[j]] = arr[i][j];
});
});
return arr2;
}
createObject(data);

TA貢獻(xiàn)1757條經(jīng)驗(yàn) 獲得超8個(gè)贊
你可以做這樣的事情
dataToObj=(data)=>{
let head=data[0];
let result=[];
for(let i=1;i<data.length;i++){
let obj={};
for(let j=0;j<head.length;j++){
obj[head[j]]=data[i][j]
}
result.push(obj);
}
return result;
}
添加回答
舉報(bào)