2017-02-10 136 views
3

我的數據如何對象轉換爲對象的數組

var data={ 
    key:value, 
    key:value, 
    key:value 
}; 

預計輸出

var data=[ 
    {key:value}, 
    {key:value}, 
    {key:value} 
]; 
+0

我懷疑這是你的數據,如果你這樣聲明,你的數據實際上是'var data = {key:value}',所以請給我們一個可驗證的代碼示例 – nozzleman

回答

2

簡單的在循環是處理此問題的方法:

var data = { 
 
    key: 'value', 
 
    key1: 'value1', 
 
    key2: 'value2' 
 
}; 
 
var arr = []; 
 
for(var k in data){ 
 
    var o = {}; 
 
    o[k]=data[k]; 
 
    arr.push(o) 
 
} 
 
console.log(arr)

0

您可以使用Object.keyskeys

Object.keys(data) 
console.log(Object.keys(data)[0]) // will print first key 

或者您可以使用Object.values得到的值:

Object.values(data) 
console.log(Object.values(data)[0]) // will print first key value 
2

使用Object.keysArray#map方法。

var data = { 
 
    key: 'value', 
 
    key1: 'value', 
 
    key2: 'value' 
 
}; 
 

 
console.log(
 
    // get all object property names(keys) 
 
    Object.keys(data) 
 
    // iterate over the keys array 
 
    .map(function(k) { 
 
    // generate the obect and return 
 
    var o = {}; 
 
    o[k] = data[k]; 
 
    return o; 
 
    }) 
 
)

3

可以使用多個ES6速記以產生一個表達所希望的輸出:

Object.keys(data).map(key => ({[key]: data[key]})) 

下面的代碼片斷演示此:

const data = { 
 
    key0:'value0', 
 
    key1:'value1', 
 
    key2:'value2' 
 
}; 
 

 
const output = Object.keys(data).map(key => ({[key]: data[key]})); 
 

 
console.log(JSON.stringify(output));

0

嘗試這樣做是這樣的: -

function json2array(json){ 
var output = []; 
var keys = Object.keys(json); 
keys.forEach(function(key){ 
    output.push(json[key]); 
}); 
return output;}