Javascript jQuery创建了新数组

Javascript jQuery创建了新数组,javascript,arrays,Javascript,Arrays,我对jQuery数组有问题 我想要两个不同的数组 var main_array = [] function create_array(){ main_array[0] = {id: 1, status: true, number: 10}; main_array[1] = {id: 1, status: true, number: 16}; main_array[2] = {id: 1, status: true, number: 20}; } function cha

我对jQuery数组有问题

我想要两个不同的数组

var main_array = []

function create_array(){

   main_array[0] = {id: 1, status: true, number: 10};
   main_array[1] = {id: 1, status: true, number: 16};
   main_array[2] = {id: 1, status: true, number: 20};

}

function change(array, key, number){

   array[key].number = number

}

create_array()

new_array = change(main_array, 0, 20); 

console.log(main_array)
在这种情况下,我在$main_数组中添加了一个元素,我希望更改编号并创建新数组,但当我调用change函数时,我的main_数组被更改为

我不想更改主数组号


这就是我的错误所在

数组是对象,当您将对象传递给函数时,您传递的是对对象内存位置的引用,而不是对象的副本。因此,如果接收函数修改传入参数,它将修改原始对象

由于数组包含对象,它们也作为对底层对象内存位置的引用传递,因此需要创建数组中每个对象的副本。这件事就这样结束了

正如我在评论中所提到的,在标识符前面加上美元符号通常被认为是一种惯例,用来表示标识符包含对JQuery包装集对象的引用。由于代码中没有使用JQuery,我建议您删除它们


var main_数组=[];//为什么使用美元符号作为非jQuery变量的前缀?在您的代码中根本没有使用jQuery。什么是test?是否需要数组的副本并更改值?数组是通过引用给出的。在change函数中需要做的是创建一个新数组并返回新数组:och抱歉。。。测试是更改…@sinisake,就像我写的一样。是的,在第一次演示/输出中,两个数组都更改了,所以我很困惑…: