Javascript 将二维阵列转换为稀疏阵列
我有一个Javascript 将二维阵列转换为稀疏阵列,javascript,Javascript,我有一个x=[[3,1],[2,2]]数组,我想把它变成x[3][1]=1和x[2][2]=1。代码还应该适用于较长的数组,如x=[[3,1]、[2,12]、[3,3]]如果还没有,您可以迭代并创建一个新数组。然后将该值分配给给定的索引 此解决方案采用新数组作为结果 var x=[[3,1],[2,12],[3,3]], 结果=[]; x、 forEach(函数(a){ 结果[a[0]]=结果[a[0]]| |[]; 结果[a[0]][a[1]]=1; }); 控制台日志(结果) .as控制台
x=[[3,1],[2,2]]
数组,我想把它变成x[3][1]=1
和x[2][2]=1
。代码还应该适用于较长的数组,如x=[[3,1]、[2,12]、[3,3]]
如果还没有,您可以迭代并创建一个新数组。然后将该值分配给给定的索引
此解决方案采用新数组作为结果
var x=[[3,1],[2,12],[3,3]],
结果=[];
x、 forEach(函数(a){
结果[a[0]]=结果[a[0]]| |[];
结果[a[0]][a[1]]=1;
});
控制台日志(结果)代码>
.as控制台包装{max height:100%!important;top:0;}
假设您接受两个输入:pos0
,pos1
for (i in x)
if (x[i][0] == pos0 && x[i][1] == pos1) {
// Do stuff
}
因此,它基本上检查每个索引,您可以执行以下操作:
var x=[[3,1]、[2,12]、[3,3]],
r=x.reduce((p,c)=>(p[c[0]]?p[c[0]]]c[1]=1
:p[c[0]]=Array.from({[c[1]]:1,长度:c[1]+1}),
p) ,[]);
控制台日志(r)代码>
输出:
x = [ [ 3, 1 ], [ 2, 2 ] ]
y = [ , , [ , , 1 ], [ , 1 ] ]
您可以使用array#reduce
迭代数组,检查数组是否存在与第一个值对应的数组,以防它没有使用[]
初始化,然后将该值分配给该索引
var x=[[3,1]、[2,12]、[3,3];
var结果=x.reduce((r[a,b])=>{
r[a]=r[a]| |[];
r[a][b]=1;
返回r;
},[]);
控制台日志(结果)代码>
作为控制台包装{max height:100%!important;top:0;}
您的术语是错误的x=[[3,1],[2,2]]
是一个二维数组。您需要的是将数组数组转换为稀疏数组。“数组数组”是二维数组。仍然可以将[[3,1]、[2,2]]转换为x[3][1]和x[2][2]忽略术语,您能否提供代码将二维数组更改为稀疏数组arrays@Andrew艾森伯格说到术语,然后,我会说将数组转换为稀疏数组的稀疏数组。
x = [ [ 3, 1 ], [ 2, 2 ] ]
y = [ , , [ , , 1 ], [ , 1 ] ]