Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/412.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 JS数组-高级分配_Javascript - Fatal编程技术网

Javascript JS数组-高级分配

Javascript JS数组-高级分配,javascript,Javascript,这与Javascript中的数组有关,我正试图在复杂的逻辑中使用这些数组 考虑以下代码: a['a1'] = 'AJA' 我们知道,这与a.a1='AJA'相同(前提是给出了正确的定义) 因此,如果我们继续解释这一点: console.log(a.a1[0]) console.log(a.a1[1]) console.log(a.a1[2]) console.log(a.a1) 它记录: A J A AJA 现在,我只需要在第4个位置分配一个新字符。 当我尝试a[a1][3]='Y'或a.

这与Javascript中的数组有关,我正试图在复杂的逻辑中使用这些数组

考虑以下代码:

a['a1'] = 'AJA'
我们知道,这与
a.a1='AJA'
相同(前提是给出了正确的定义)

因此,如果我们继续解释这一点:

console.log(a.a1[0])
console.log(a.a1[1])
console.log(a.a1[2])
console.log(a.a1)
它记录:

A
J
A
AJA
现在,我只需要在第4个位置分配一个新字符。

当我尝试
a[a1][3]='Y'
a.a1[3]='Y'
然后尝试
console.log(a.a1)
时,它仍然显示
AJA
,而不是
AJAY

我知道我们可以使用字符串连接来实现这一点,即。
a['a1']=a['a1']+'Y'
并实现这一点


但是为什么第一种方法不起作用呢?还有什么其他方法可以做到这一点呢?

字符串是不可变的。这意味着如果你创建了一个字符串,你就不能再修改它了。所以你的
a1
对第四个字符一无所知

你可以看到这个例子。我试图更改已创建字符串的第二个字符,但它将不再更改

设a={};
a['a1']='AJA';
a、 a1[1]=“a”;

控制台日志(a.a1)据我所知,a[a1][3]或a.a1[3]是一个字符串变量,您可以将其视为:

var s='ss'


计算s[0]时,将得到一个字符串值。因此,当您将任何字符串值赋给s时,将不会得到“ss”+anyvalue,而是anyvalue.:)

请不要使用具有自定义属性的数组,顺便说一句,这不是数组问题,而是字符串问题。如果要实现此行为,需要将字符串声明为字符数组<代码>var str=“AJA”——>var strArr=[“A”、“J”、“A”]
,编辑完字符数组后,需要将其转换回字符串。
var str=“AJA”;var strArr=str.split(“”);strArr[3]=“Y”;str=strArr.join(“”)@LearnHowToBeTransparent这可能对一个简单的数组有效。但不是这里……是的,它们是不可变的。但这是否意味着字符串连接是完成这一任务的唯一方法?@A.J.有很多方法。但是字符串连接是一个简单的方法“通过什么其他方法可以做到这一点?”你可以创建一个函数来获取参数char和index,但是在后台你需要使用字符串连接:)你基本上是在确认OP已经计算出了什么,而没有提供答案。字符串本身没有赋值,仅适用于属性(不是
s=…
,而是
s[2]=…
)。这与问题有什么关系?仅举一个例子,当您尝试评估a[a1][3]或a.a1[3]时,您将得到与我上面提到的示例相同的类型。试一试(a[a1][3])