2016-04-29 159 views
0

我JSON對象的數組如下:轉換陣列

var out = [{ 
    1: { 
    name: 'Name 1', 
    id: 'one' 

    } 
}, { 
    2: { 
    name: 'Name 2', 
    id: 'two' 
    } 
}]; 

我試圖將其轉換爲2-d數組:

var out = [[1,object],[2,object]]; 

我試圖使用json.encode(out),任何方法或方法來轉換此?

回答

4

只是一味

var output = out.map(function(val){ 
    var keyName = parseInt(Object.keys(val)[0],10); 
    var value = val[keyName]; 
    return [keyName, value]; 
}); 

DEMO

var out = [{ 
 
    1: { 
 
    name: 'Name 1', 
 
    id: 'one' 
 
    } 
 
}, { 
 
    2: { 
 
    name: 'Name 2', 
 
    id: 'two' 
 
    } 
 
}]; 
 

 
var output = out.map(function(val) { 
 
    var keyName = parseInt(Object.keys(val)[0],10); 
 
    var value = val[keyName]; 
 
    return [keyName, value]; 
 
}); 
 

 
document.body.innerHTML += JSON.stringify(output,0,4);

+0

你已經忘記了 「1」 和 「2」 應該是數字 – RomanPerekhrest

+0

@RomanPerekhrest感謝,所做的更改。 – gurvinder372

3

您可以使用map()Object.keys()

var out = [{ 
 
    1: { 
 
    name: 'Name 1', 
 
    id: 'one' 
 

 
    } 
 
}, { 
 
    2: { 
 
    name: 'Name 2', 
 
    id: 'two' 
 
    } 
 
}]; 
 

 
var res = out.map(function(v) { 
 
    var key = Object.keys(v)[0]; 
 
    return [parseInt(key,10), v[key]]; 
 
}) 
 

 
document.write('<pre>' + JSON.stringify(res, null, 3) + '</pre>');

+0

你忘了「1」和「2」應該是數字 – RomanPerekhrest

+0

@RomanPerekhrest:更新 –

3

一個更加動態的數據結構的建議,沒有壓力的第一個關鍵

var out = [{ 1: { name: 'Name 1', id: 'one' } }, { 2: { name: 'Name 2', id: 'two' } }], 
 
    result = []; 
 

 
out.forEach(function (a) { 
 
    Object.keys(a).forEach(function (k) { 
 
     result.push([+k, a[k]]); 
 
    }); 
 
}); 
 

 
document.write('<pre>' + JSON.stringify(result, 0, 4) + '</pre>');

+1

你忘了「1」和「2」應該是數字 – RomanPerekhrest

1

滿足您的要求:([[1,object],[2,object]]"1""2"個鍵應該是數字

var result = out.map(function(v){ 
    var k = Object.keys(v)[0]; 
    return [parseInt(k),v[k]]; 
}); 

console.log(JSON.stringify(result,0,4)); 

的console.log輸出:

[ 
    [ 
     1, 
     { 
      "name": "Name 1", 
      "id": "one" 
     } 
    ], 
    [ 
     2, 
     { 
      "name": "Name 2", 
      "id": "two" 
     } 
    ] 
]