亚洲在线久爱草,狠狠天天香蕉网,天天搞日日干久草,伊人亚洲日本欧美

為了賬號安全,請及時綁定郵箱和手機立即綁定
已解決430363個問題,去搜搜看,總會有你想問的

如何使用嵌套數組在javascript中形成對象,使用第一個數組作為對象,數組的其余部分作為值

如何使用嵌套數組在javascript中形成對象,使用第一個數組作為對象,數組的其余部分作為值

桃花長相依 2022-01-20 20:43:10
我得到了一個這樣的數組:data = [  ['first_name', 'second_name', 'sex'],  ['Jacob', 'David', 'M'],  ['Kathryn', 'Gardener', 'F'],  ['Jamaal', 'Dave', 'Unknown']].解決方案是將數組作為看起來像這樣的對象返回:[  { first_name: "Jacob", second_name: "David", sex: "M" },  { first_name: "Kathryn", second_name: "Gardener", sex: "F" }  {....}];我寫了以下代碼:var object = {};var arrays = [];for (i = 0; i < data.length; i++){   for (var j = i; j < data.length; j++){       var keys = data[0][i];       var values = data [j][i];       object[keys] = values;   }   arrays.push(object);};但我的輸出是:[   {       first_name :'Jamaal',      second_name : 'Dave',      sex : 'unknown'   },   {       first_name :'Jamaal',      second_name : 'Dave',      sex : 'unknown'   },   {      first_name :'Jamaal',      second_name : 'Dave',       sex : 'unknown'   },   {      first_name :'Jamaal',      second_name : 'Dave',      sex : 'unknown'    }];我也嘗試了幾種方法,要么我最終只能創建一個對象......
查看完整描述

3 回答

?
慕尼黑的夜晚無繁華

TA貢獻1864條經驗 獲得超6個贊

您需要在第一個循環中使用新對象(引用),否則您會為每一行獲得相同的對象。


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; }


一個更短的方法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; }


查看完整回答
反對 回復 2022-01-20
?
慕斯709654

TA貢獻1840條經驗 獲得超5個贊

  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);


查看完整回答
反對 回復 2022-01-20
?
陪伴而非守候

TA貢獻1757條經驗 獲得超8個贊

你可以做這樣的事情


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;

}


查看完整回答
反對 回復 2022-01-20
  • 3 回答
  • 0 關注
  • 175 瀏覽
慕課專欄
更多

添加回答

舉報

0/150
提交
取消
微信客服

購課補貼
聯系客服咨詢優惠詳情

幫助反饋 APP下載

慕課網APP
您的移動學習伙伴

公眾號

掃描二維碼
關注慕課網微信公眾號