Javascript 使用X.push(?)或X[索引]=?

Javascript 使用X.push(?)或X[索引]=?,javascript,arrays,Javascript,Arrays,我想用javascript创建一个长度已知的数组(X)。使用X.push(??)或X[index]=??填充我的数组有什么区别?结果似乎是一样的,但有什么不同吗 编辑:谢谢你的回复。我可能应该更具体地询问这些差异。当使用X.push函数(添加到数组末尾)时,与为非常大的数组分配空间并仅将索引设置为值相比,使用非常大的数组进行此操作时,在内存/时间方面是否会有任何问题?使用X[index]=?? 每次需要分配位置索引值时 在本作业中X.push(?? 不需要担心指数的位置。我们可以使用X[inde

我想用javascript创建一个长度已知的
数组(X)
。使用
X.push(??)
X[index]=??
填充我的数组有什么区别?结果似乎是一样的,但有什么不同吗


编辑:谢谢你的回复。我可能应该更具体地询问这些差异。当使用X.push函数(添加到数组末尾)时,与为非常大的数组分配空间并仅将索引设置为值相比,使用非常大的数组进行此操作时,在内存/时间方面是否会有任何问题?

使用
X[index]=??

每次需要分配位置索引值时

在本作业中
X.push(??


不需要担心指数的位置。我们可以使用
X[index]=??

每次需要分配位置索引值时

在本作业中
X.push(??


不需要担心指数的位置。我们可以直接分配数据元素

99%的时间用于向使用push的数组添加新元素

通常情况下,您不会添加带有x[index]的元素,因为会弄乱数组中的自然序列

当您需要编辑或获取数组的特定元素时,通常使用x[index],例如,在函数上传递索引

function doSomethingWithSpecificElement(index){
    //x[index] usage (edit or anything)
}

向使用push的数组添加新元素的次数占99%

通常情况下,您不会添加带有x[index]的元素,因为会弄乱数组中的自然序列

当您需要编辑或获取数组的特定元素时,通常使用x[index],例如,在函数上传递索引

function doSomethingWithSpecificElement(index){
    //x[index] usage (edit or anything)
}

当我们写
X[index]=
时,意味着我们为特定的索引设置了一个值。
当我们写
X时,push(??
意味着我们在不知道位置的情况下输入值

当我们写
X[index]=
意味着我们为特定的索引设置了一个值。 当我们编写
X.push(??)
时,意味着我们在X.push()中放置了位置未知的值

,您不必担心索引。函数的作用是:自动将元素从索引0-n的位置连续推送。 但是在X[index]中,您需要专门定义索引,您需要将值放入数组中哪个索引处。

在X.push()中,您不需要担心索引。函数的作用是:自动将元素从索引0-n的位置连续推送。
但是在X[index]中,您需要专门定义索引,您需要将值放在哪个索引的数组中。

这将取决于
索引的精确值

使用
array.push(值)时,该值将追加到数组的末尾,而不会更改数组中的其他值。结果类似于使用
array[array.length]=value

var X = [ 1 ];

X.push(2);       // `length` becomes 2; 2 appended after 1
console.log(X);  // [ 1, 2 ]

X[X.length] = 3; // `length` becomes 3; 3 appended after 2
console.log(X);  // [ 1, 2, 3 ]
除此之外,
array[index]=value为特定索引(属性)指定一个值,而不管它是否已经有值:

X[0] = 99;      // `length` still 3; 1 replaced
console.log(X); // [ 99, 2, 3 ]

X[4] = 77;      // `length` becomes 5; gap created at 4th
console.log(X); // [ 99, 2, 3, undefined, 77]

在这两种情况下,数组的
长度将根据需要增加,以在最大索引上保持1。

这将取决于
索引的精确值

使用
array.push(值)时,该值将追加到数组的末尾,而不会更改数组中的其他值。结果类似于使用
array[array.length]=value

var X = [ 1 ];

X.push(2);       // `length` becomes 2; 2 appended after 1
console.log(X);  // [ 1, 2 ]

X[X.length] = 3; // `length` becomes 3; 3 appended after 2
console.log(X);  // [ 1, 2, 3 ]
除此之外,
array[index]=value为特定索引(属性)指定一个值,而不管它是否已经有值:

X[0] = 99;      // `length` still 3; 1 replaced
console.log(X); // [ 99, 2, 3 ]

X[4] = 77;      // `length` becomes 5; gap created at 4th
console.log(X); // [ 99, 2, 3, undefined, 77]

在这两种情况下,数组的
长度将根据需要增加,以保持在最大索引的1之上。

这里有多个内容。让我们来谈谈这里的第一个场景,
X[index]=“something”

在这里,您可以提到
索引
,它将在数组的特定索引中赋值。但这里有一个陷阱。例如,考虑下面的代码

var t = ['hello'];
t[21] = ['world'];
虽然您将假定数组中只有两个元素,但它只返回长度为
2
,相反,这将返回
22
,因为它也会创建0到20之间的空数组元素

此外,如果您传递了错误的索引,它将覆盖所述索引中的任何值



如果要将元素推送到数组的末尾,则不需要指定任何索引。它知道长度并将新元素附加到数组的末尾。但在这里你做不了什么。它总是将新元素推到数组的末尾。类似地,如果要在数组的开头添加元素,可以使用

这里有很多东西。让我们来谈谈这里的第一个场景,
X[index]=“something”

在这里,您可以提到
索引
,它将在数组的特定索引中赋值。但这里有一个陷阱。例如,考虑下面的代码

var t = ['hello'];
t[21] = ['world'];
虽然您将假定数组中只有两个元素,但它只返回长度为
2
,相反,这将返回
22
,因为它也会创建0到20之间的空数组元素

此外,如果您传递了错误的索引,它将覆盖所述索引中的任何值


如果要将元素推送到数组的末尾,则不需要指定任何索引。它知道长度并将新元素附加到数组的末尾。但在这里你做不了什么。它总是将新元素推到数组的末尾。类似地,如果要在数组的开头添加元素,可以使用

您应该使用
array(desiredLength)
。此外,您可能想看看在这种情况下,哪一个是非常可读的,即使您根本不看它