Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/12.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_Arrays_Variables - Fatal编程技术网

Javascript 在数组中存储变量的名称

Javascript 在数组中存储变量的名称,javascript,arrays,variables,Javascript,Arrays,Variables,我有四个变量,我想用一个函数来改变它们的值,在这个函数中,我可以放入一个存储变量的数组。我正在制作一个使用坐标系的游戏,因此我有四个坐标,我想用y轴和x轴不断更新。我有一个数组yAxis,包含所有y值,还有一个数组xAxis,包含所有x值。我想把它们组合成坐标。当然,我可以使用以下代码更新它们: yAxis = [10, 10, 9, 9]; xAxis = [4, 4, 5, 5]; coordinate1 = "" + yAxis[0] + xAxis[0]; coordinate2 =

我有四个变量,我想用一个函数来改变它们的值,在这个函数中,我可以放入一个存储变量的数组。我正在制作一个使用坐标系的游戏,因此我有四个坐标,我想用y轴和x轴不断更新。我有一个数组yAxis,包含所有y值,还有一个数组xAxis,包含所有x值。我想把它们组合成坐标。当然,我可以使用以下代码更新它们:

yAxis = [10, 10, 9, 9];
xAxis = [4, 4, 5, 5];

coordinate1 = "" + yAxis[0] + xAxis[0];
coordinate2 = "" + yAxis[1] + xAxis[1];
coordinate3 = "" + yAxis[2] + xAxis[2];
coordinate4 = "" + yAxis[3] + xAxis[3];
但是我不想像前面那样更改它们的值,而是想做这样的事情:这个函数将取下面的数组,coordinateArray作为a,yAxis作为b,xAxis作为c。那么x就是一个整数

test(a, b, c){
  for(x = 0; x < 4; x++){
    a[x] = "" + b[x] + c[x];
  }
}
然后它应该如何处理我运行测试函数时使用的任何数组:

coordinatesArray[0] = "" + yAxis[0] + xAxis[0];
coordinatesArray[1] = "" + yAxis[1] + xAxis[1];
coordinatesArray[2] = "" + yAxis[2] + xAxis[2];
coordinatesArray[3] = "" + yAxis[3] + xAxis[3];
例如CoordinateArray[0]应该表示coordinate1


因此,我将创建一个数组来存储变量,这样我就可以轻松地更改目标变量。但问题是,当我运行这个程序时,[x]不是变量名,而是它们的值,这意味着它不起作用。所以我的问题是,有没有办法将变量的名称存储在一个数组中,这样我就可以使用一个类似于我所展示的函数来定位它们?我想将变量的名称存储在一个数组中,然后能够使用该名称将变量作为目标,这样我就可以更改它们的值。

这就是您要做的

yAxis=[10,10,9,9]; xAxis=[4,4,5,5]; 坐标1=魔法; 协调2=意志; 协调3=发生; 坐标4=此处; 函数testa,b,c{ forx=0;x<4;x++{ 窗口[a[x]=+b[x]+c[x]; } } 函数loga{ 让输出=[]; forx=0;x<4;x++{ output.pushwindow[a[x]]; } console.logoutput; }; CoordinateArray=[coordinate1,coordinate2,coordinate3,coordinate4]; 对数坐标阵列; 测试坐标阵列、xAxis、yAxis;
对数坐标阵列 Javascript中的数组只有索引而没有名称,这就是为什么需要对象:

yAxis=[10,10,9,9]; xAxis=[4,4,5,5]; CoordinateArray=['coordinate1','coordinate2','coordinate3','coordinate4']; 函数testa,b,c{ 设arrOfObj=[]; forlet i=0;i控制台。LogTestCoordinateArray、yAxis、xAxis 在我看来,OP需要一个简单的基于对象的键值存储。但我可能弄错了

因此,答案首先将重点放在如何生成x-y坐标的串联对列表上,我认为这是最实用的方法

常数yAxis=[10,10,9,9]; 常数xAxis=[4,4,5,5]; const coordinates list=yAxis.mapy,idx=>`${y}${xAxis[idx]}`; console.log“…coordinatesList=>”,coordinatesList;
.作为控制台包装{max height:100%!important;top:0;}测试在做什么?为什么要先将值分配给CoordinateArray,然后在测试中执行相同的操作?请添加一个工作示例和想要的结果。我已尝试更好地解释。对不起,如果我不擅长解释,我刚刚开始编程。Thx的任何帮助:我有一个协调阵列的问题。首先,赋值coordinateArray=[coordinate1,coordinate2,coordinate3,coordinate4];然后调用test,在这里分配相同的值。为什么是两次?@PeterSeliger,是和否。是的,因为这种方法直接赋值,所以我也使用了这种模式,其中和否是因为op使用了单个变量,就像数组一样,应该将其视为数组。即使是被接受的答案也是imho wron,以及重复的目标。如果你想提供一个答案,我可以删除重复关闭。看起来这是我想做的:D!但我不熟悉什么是窗口?当你将它们作为字符串存储在数组中时,它们看起来仍然有值?例如,coordinate1首先==magic,然后coordinate1==410?这是如何工作的?@EmilSun03 JavaScript中的大多数内容都是对象。当您执行myVar=5时,此myVar将成为一个预先存在的对象(即窗口)的属性。如果你想要更好的控制,你可以做一些事情,比如const myContainer={},然后myContainer.myVar=5,这样你就不会弄乱窗口了。哦,好吧,那么对于窗口,你只是在使用一个已经存在的对象,而不是创建一个新对象?@EmilSun03是的,但要尽量避免它。假装你们现在不知道窗户的事。如果变量的性质不同,比如名称和年龄,那么您将执行constperson={};person.name=Stratubas;person.age=30;,但是由于变量是数组ish myVar1,myVar2…,所以对它们使用数组更符合逻辑。
coordinatesArray[0] = "" + yAxis[0] + xAxis[0];
coordinatesArray[1] = "" + yAxis[1] + xAxis[1];
coordinatesArray[2] = "" + yAxis[2] + xAxis[2];
coordinatesArray[3] = "" + yAxis[3] + xAxis[3];