Javascript 将对象转换为多维数组

Javascript 将对象转换为多维数组,javascript,arrays,json,object,multidimensional-array,Javascript,Arrays,Json,Object,Multidimensional Array,我基本上想反过来做: 假设我有一个这样的物体: { "6": {"10":{'id':0,'name':'player1'}}, "7": {"5":{'id':1,'name':'player2'}} } [ null, null, null, null, null, null, [null, null, null, null, null, null, null, null, null, null, {'id':0,

我基本上想反过来做:

假设我有一个这样的物体:

{
  "6": {"10":{'id':0,'name':'player1'}},
  "7": {"5":{'id':1,'name':'player2'}}
}
[
    null, 
    null, 
    null, 
    null, 
    null, 
    null, 
    [null, null, null, null, null, null, null, null, null, null, {'id':0,'name':'player1'}],
    [null, null, null, null, null, {'id':1,'name':'player2'}]
]
如何将其转换为如下合法数组:

{
  "6": {"10":{'id':0,'name':'player1'}},
  "7": {"5":{'id':1,'name':'player2'}}
}
[
    null, 
    null, 
    null, 
    null, 
    null, 
    null, 
    [null, null, null, null, null, null, null, null, null, null, {'id':0,'name':'player1'}],
    [null, null, null, null, null, {'id':1,'name':'player2'}]
]
这是我成功地用另一种方式转换它的代码:

function populateFromArray(array) {
  var output = {};
  array.forEach(function(item, index) {
    if (!item) return;
    if (Array.isArray(item)) {
      output[index] = populateFromArray(item);
    } else {
      output[index] = item;
    }
  });
  return output;
}

console.log(populateFromArray(input));
var obj={
“6”:{“10”:{'id':0,'name':'player1'},
“7”:{“5”:{'id':1,'name':'player2'}
};
函数populateArray(obj){
var范围=0,
arr=[];
对于(obj中的var指数){
range=Math.max(parseInt(索引),range);
}
对于(var i=0;i
函数objectToArray(obj){
var len=Math.max.apply(null,Object.keys(obj));
if(len!==len)返回obj;//检查是否为NaN
var输出=[];
对于(var i=0;i,基于您的,假设源代码是json,您还可以在解析时使用REVOVE函数直接转换数据

var json='{“6”:{“10”:{“id”:0,“name”:“player1”},7”:{“5”:{“id”:1,“name”:“player2”}};
函数恢复器(键,val){
如果(isNaN(键)| | val.id!==未定义)
返回val;
var-res=[];
for(var p在val中)
res[p]=val[p];
返回res;
}
var gameField=JSON.parse(JSON,reviver);

console.log(gameField);
number作为属性名通常不是一个好主意。从技术上讲,它已经是一个合法的数组。
obj[7][5]
返回
{id:1,name:“player2”}
。我想唯一的区别是,所有未注册的数组位置都是
未定义的,而不是
null
。好吧,我想在不出错或不检查未定义的情况下进行循环。Atm obj[0][0]会通过一个错误,不是吗?@Forivin:是的,因为
obj[0]
未定义的
,因此它没有第一个元素。
obj[0][0]
也会在新结构中引发错误