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

Javascript 在变量中保存完整数组名和索引

Javascript 在变量中保存完整数组名和索引,javascript,arrays,Javascript,Arrays,我想知道为什么一些看起来很简单的东西不能像你期望的那样工作 Array1 = ["item1", "item2", "item3", "item4", "item5"]; Array1[0] = "changeditem1"; 使用Array1[0]更改数组的这种方法工作正常,并将值更改为changeditem1 ["changeditem1", "item2", "item3", "item4", "item5"] 如果你把它放在一个变量里 var arrayvariable = Arr

我想知道为什么一些看起来很简单的东西不能像你期望的那样工作

Array1 = ["item1", "item2", "item3", "item4", "item5"];

Array1[0] = "changeditem1";
使用Array1[0]更改数组的这种方法工作正常,并将值更改为changeditem1

["changeditem1", "item2", "item3", "item4", "item5"]
如果你把它放在一个变量里

var arrayvariable = Array1[0]
然后尝试使用变量更改数组,使用

arrayvariable = "changeditem1"

Array1 = ["item1", "item2", "item3", "item4", "item5"];

对数组没有任何影响。如果有人能解释我是否遗漏了什么或者我做错了什么,那就太好了。谢谢。

这很简单。它与数组无关

var a = "some value";
var b = a;
var b = "change the value";
console.log(a);  //some value
=
运算符将更改存储在其左侧的值

因此,通过更改第3行中
b
的值,我们将只更改
b
的值,而不是
a


要更改
a
,您需要再次将
b
分配给
a
,即通过写入
a=b

在javascript中,=运算符将值从操作数的右侧复制到左侧。除非右侧的变量类型为object,否则将复制对该对象的引用

var obj = {num:5};
var number = 5;
var array = [obj, number]

obj.num = 10;
number = 10;

console.log(array[0].num)
console.log(array[1])
有关详细说明,请参阅


要解决此问题,可以存储项的索引,以便修改数组。或者,您可以将数据存储为一个对象数组,这样当您复制一个变量时,您仍然可以通过它的引用来修改它。

JavaScript不能这样工作;无法获取数组元素的别名。您的比较有缺陷。请尝试
arrayvariable[0]=“changeditem1”
。Array1使用的内存位置与arrayvariable不同。因此,Array1本身的更改是更改其内容,而arrayvariable的更改是更改其自身的内容,而不是更改其他内存位置。基本类型是通过值传递的,而不是通过引用传递的。更改其副本不会影响原始值。例如,如果数组中的项是对象,那么您是对的,但是因为它们是字符串(基本),所以您不能这样更改它们!您的答案是如何更改变量值。@UndefinedUsername是的,这是op最终的要求。这可能是最终的要求,但我一直在寻找一种可能的方法,使用Array1[0]作为变量的示例。@UndefinedUsername您可以使用以下内容:
Array1=[arrayvariable,“item2”、“item3”、“item4”,“项目5”];