我有以下JSON对象数组:
var out = [{
1: {
name: 'Name 1',
id: 'one'
}
}, {
2: {
name: 'Name 2',
id: 'two'
}
}];
我正在尝试将其转换为二维数组:
var out = [[1,object],[2,object]];
我尝试使用json.encode(out),转换它的任何方法或方法?
答案 0 :(得分:4)
只需尝试
var output = out.map(function(val){
var keyName = parseInt(Object.keys(val)[0],10);
var value = val[keyName];
return [keyName, value];
});
<强>样本强>
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);
&#13;
答案 1 :(得分: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>');
答案 2 :(得分: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>');
答案 3 :(得分: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"
}
]
]