javascript - 如何旋转一个javascript数组

标签 javascript arrays

我有这个 javascript 数组:

[['a', 'x', 1],
 ['a', 'y', 2],
 ['b', 'x', 3],
 ['b', 'z', 4],
 ['c', 'y', 5],
 ['c', 'z', 6]]

我如何将其旋转到如下所示的第二列('x'、'y'、'z')从上方穿过。

[['a', 1, 2, null],
 ['b', 3, null, 4],
 ['c', null, 5, 6]]

编辑: 对不起,我不清楚。到目前为止的答案似乎引用了 x、y、z 的静态长度/值。该数组将是动态的,并且可以在第二列中包含任何内容(例如“t”、“u”、“v”、“w”而不是“x”、“y”、“z”)。我想我需要先用所有可能组合的空值填充数组,然后插入值。

谢谢..

最佳答案

根据 Fabricio 的评论,您可以通过以下方式完成类似的事情:

var result = {};
for(var i=0;i< basearray.length;i++){
    if(!result[basearray[i][0]]){
        result[basearray[i][0]]={};
    }
    result[basearray[i][0]][basearray[i][1]]=basearray[i][2];
}

请注意,这将返回一个对象或散列图,严格来说不是一个数组,但数据更有条理,如果您愿意,可以轻松地将其转换为数组。 Here是一个演示(检查您的控制台)。

通过添加这段代码:

var count=0;
for(var key in result){
    result[count]=[];
    result[count][0]=key;
    result[count][1]=result[key].x||null;
    result[count][2]=result[key].y||null;
    result[count][3]=result[key].z||null;
    count++;
}

您的结果对象现在模拟两种结构、您的原始数组数组和建议的键值对。您可以在此处查看结果:http://jsfiddle.net/9Lakw/3/

这是结果的样子:

{
   "a":{
      "x":1,
      "y":2
   },
   "b":{
      "x":3,
      "z":4
   },
   "c":{
      "y":5,
      "z":6
   },
   "0":[
      "a",
      1,
      2,
      null
   ],
   "1":[
      "b",
      3,
      null,
      4
   ],
   "2":[
      "c",
      null,
      5,
      6
   ]
}

关于javascript - 如何旋转一个javascript数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/13058615/

相关文章:

javascript - JScript,从 IE 将数据写入文件

javascript - Vue 3 组件不呈现但显示在元素树上

javascript - 如何在vue组件中为@import ~stylus设置webpack?

javascript - 在 javascript 中编写向嵌套数组的每个对象添加属性的算法有哪些方法?

arrays - 如何返回随机字典

javascript - 如何监听 TCP 数据包获取数据并使用 node.js 发送 UDP

javascript - 在插件函数中调用 html 数据集

javascript - 在javascript中复制对象数组

javascript - 一旦我将一个项目添加到我的数组中,我就无法从我的数组中删除一个项目

java - 输入、数组和 NextLine