将json对象数组转换为2-D数组

时间:2016-04-29 06:44:34

标签: javascript html arrays json

我有以下JSON对象数组:

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

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

我正在尝试将其转换为二维数组:

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

我尝试使用json.encode(out),转换它的任何方法或方法?

4 个答案:

答案 0 :(得分:4)

只需尝试

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

<强>样本

&#13;
&#13;
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;
&#13;
&#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"
        }
    ]
]