2017-04-11 29 views
-1

我得到了一個對象,具有陣,讓這個輸出(輸入是從組名稱一系列的表格):如何正確格式化這個對象

{ 
    username: [ 'username1', 'username2' ], 
    firstname: [ 'firstname1', 'firstname2' ], 
    lastname: [ 'lastname1', 'lastname2' ], 
    email: [ 'email1', 'email2' ], 
} 

我想讓物體像被格式化這個:

[{username : username1, 
    firstname : firstname1, 
    lastname : lastname1, 
    email : email1}, 

    {username: username2, 
    firstname: firstname2, 
    lastname : lastname2, 
    email : email2} 
         ] 

因爲我使用node.js,我認爲有一些方法lodash。任何人都可以給我一些幫助嗎?謝謝 !

+0

是否每個陣列具有相同的長度? – Weedoze

+0

是的,因爲它是從一系列用戶輸入中獲得的,併爲每個表單組提供所需的信息 –

回答

1

可能的解決方案,使用Array#forEachObject.keys

var obj = { username: [ 'username1', 'username2' ], firstname: [ 'firstname1', 'firstname2' ], lastname: [ 'lastname1', 'lastname2' ], email: [ 'email1', 'email2' ] }, res = []; 
 
    
 
    obj.username.forEach(function(_, i) { 
 
     var object = {}; 
 
     Object.keys(obj).forEach(function(c) { 
 
     object[c] = obj[c][i]; 
 
     }); 
 
     res.push(object); 
 
    }); 
 

 
    console.log(res);

Array#reduce選項。

var obj = { username: [ 'username1', 'username2' ], firstname: [ 'firstname1', 'firstname2' ], lastname: [ 'lastname1', 'lastname2' ], email: [ 'email1', 'email2' ] }, 
 
    
 
    res = obj.username.reduce(function(s,a,i) { 
 
     var object = {}; 
 
     Object.keys(obj).forEach(function(c) { 
 
     object[c] = obj[c][i]; 
 
     }); 
 
     s.push(object); 
 
     return s; 
 
    }, []); 
 

 
    console.log(res);

+1

這個是完美的!謝謝,它解決了我的問題:) –

1

在普通的JavaScript:

var oldObj = { 
    username: [ 'username1', 'username2' ], 
    firstname: [ 'firstname1', 'firstname2' ], 
    lastname: [ 'lastname1', 'lastname2' ], 
    email: [ 'email1', 'email2' ], 
}; 
var newArray =[]; 
for(var key in oldObj) 
{ 
    oldObj[key].forEach(function(property){ 
    var index = oldObj[key].indexOf(property); 
    if(!newArray[index]) 
    newArray[index] = {}; 
    newArray[index][key] = property 
    }); 
} 
0

使用lodash -

console.log(_.transform(myObj, function(result, value, key) { 
    _.each(value, function(val, i){ 
     if(!result[i]) result[i] = {}; 
      result[i][key]= val; 
     }); 
}, [])); 

這裏試試吧 - lodash unwind