2017-07-18 59 views
-1

的陣列I具有對象數據的像以下結構的陣列:轉換對象的陣列分成數組

var mydata=[ 
      {"category" :"phone","name":"Apple","model":"5s"}, 
      {"category" :"phone","name":"Moto","model":"g4"} 
     ] 

欲將此轉換成這樣的結構數組的數組:

var expextedData=[ 
    ["category","name","model"], 
    ["phone","Apple","5s"], 
    ["phone","Moto","g4"] 
] 
+1

你嘗試過什麼?你有什麼具體問題? –

回答

1

使用Array#map來迭代數組,並用Array#reduce將每個對象轉換爲它的值。

我正在使用一個硬編碼數組而不是使用Object#鍵來提取它們,因爲the order of an object properties is not guaranteed

var mydata=[ 
 
    {"category" :"phone","name":"Apple","model":"5s"}, 
 
    {"category" :"phone","name":"Moto","model":"g4"} 
 
]; 
 
    
 
var keys = ["category","name","model"]; 
 

 
var result = [keys].concat(mydata.map(function(obj) { 
 
    return keys.reduce((arr, key) => { 
 
    arr.push(obj[key]); 
 

 
    return arr; 
 
    }, []) 
 
})); 
 

 
console.log(result);

0

你可以在每個對象的值並添加到任何一個對象也可以推數組和密鑰。是這樣的:

var mydata=[ 
 
     {"category" :"phone","name":"Apple","model":"5s"}, 
 
     {"category" :"phone","name":"Moto","model":"g4"} 
 
    ] 
 
var arr = []; 
 

 
arr.push(Object.keys(mydata[0])); 
 

 
mydata.forEach(function(ob){ 
 
arr.push(Object.values(ob)); 
 
}) 
 

 
console.log(arr);

0

您可以使用Set擺脫對象的所有獨特的鍵第一個元素,然後mapObject.values得到的值。

var mydata=[{"category" :"phone","name":"Apple","model":"5s"},{"category" :"phone","name":"Moto","model":"g4"}] 
 

 
var result = [[...new Set([].concat(...mydata.map(Object.keys)))], ...mydata.map(Object.values)] 
 
console.log(result)