在javascript中添加数组值时,push和[]之间有什么区别?

在javascript中添加数组值时,push和[]之间有什么区别?,javascript,arrays,Javascript,Arrays,我在JavaScript中使用数组时遇到了一个问题 我知道两种增加价值的方法​​到一个数组 第一: let arr = []; arr.push(1);// arr[0] = 1; 第二: let arr = []; arr['1'] = 1;// arr['1'] = 1; 我想知道这种行为到底有什么不同。.push会将元素推到数组中的最后一个位置。使用此方法,无法重写现有值。但是,使用括号表示法可以在数组的任何索引处设置值,如 arr[1] = 1; arr[5] = 2; arr["

我在JavaScript中使用数组时遇到了一个问题

我知道两种增加价值的方法​​到一个数组

第一:

let arr = [];
arr.push(1);// arr[0] = 1;
第二:

let arr = [];
arr['1'] = 1;// arr['1'] = 1;

我想知道这种行为到底有什么不同。

.push会将元素推到数组中的最后一个位置。使用此方法,无法重写现有值。但是,使用括号表示法可以在数组的任何索引处设置值,如

arr[1] = 1;
arr[5] = 2;
arr["foo"] = 3 
还要注意,
array
接受索引作为键,可以将其解析为整数。所以给数组赋值,比如

arr[1] = 1;
arr[5] = 2;
arr["foo"] = 3 

不是很正确的方法,

数组的Array.prototype.push方法比索引方法有一些优势

  • 通过使用push,您的数组将不会有任何空索引值的机会。这与性能优化有关

  • 您可以使用call和apply方法推入对象。例如:Array.prototype.push.call(obj,'value')

  • 无需找出要推动新元素的位置

  • 可以使用push方法合并两个数组


arr.push(1)语法为数组添加一个值
arr['1']=1
是无效语法。您可以在浏览器控制台中尝试此操作。

查找
稀疏数组
哎哟。非常感谢。我现在就去找并研究:)你上一句话是错的。数组和任何对象一样,只能使用字符串或符号作为键。其他任何内容都会隐式转换为字符串。数组只是专门处理整数字符串<代码>对象。键(['foo'])[0]=='0'和
对象。键(['foo'])[0]!==0
“可以用推方法合并两个数组”如何?您的意思是使用
arr1.push.apply(arr1,arr2)
?然后是
apply
方法发挥了神奇的作用。您可以通过简单地执行push-ex:arr1.push(arr2)或arr1.push.call(arr1,arr2)将arr2内容推送到arr1中,但要按索引推送内容,您应该使用apply。这就是我担心的<代码>arr1=[],arr2=[];arr1.推送(arr2)此时arr1将是
[[]]
。i、 e您不是在推送arr2内容,而是将arr2本身作为一个数组。您完全正确,但Array.push.apply(arr1,arr2)会将arr2内容合并到arr1中。例如:arr1=['raja'];arr2=['kaido'];Array.prototype.push.apply(arr1,arr2)。现在,arr1将具有arr2的内容和一个新的引用。我的意思是更改arr2内容不会影响arr1