我有这个 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/