2016-04-29 86 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" 
     } 
    ] 
]