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