Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/symfony/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 将二维阵列转换为稀疏阵列_Javascript - Fatal编程技术网

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 ] ]