gpt4 book ai didi

javascript - jQuery 创建了新数组

转载 作者:行者123 更新时间:2023-12-03 02:58:49 25 4
gpt4 key购买 nike

我对 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_array 数组中添加一个元素,并且想要更改编号并创建新数组,但是当我调用更改函数时,我的 main_array 被更改为。

我不想更改 main_array 编号。

这就是我做错的事情

最佳答案

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

由于您的数组包含对象,它们也作为对底层对象内存位置的引用传递,因此您需要为数组中的每个对象创建副本。这是通过 Object.assign() 完成的

此外(正如我在评论中提到的),用美元符号作为标识符前缀通常被认为是一种约定,表示标识符保存对 JQuery 包装集对象的引用。由于您没有在代码中的任何地方使用 JQuery,我建议您删除它们。

var main_array = [];  // <-- This is where the main array will go
var newArray = []; // <-- This will be where the copied array goes

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};

return main_array;
}

function change(array, key, number){
// Loop thorugh the original array:
main_array.forEach(function(obj){
// Make a copy of the objects in the array and put them in the new array
newArray.push(Object.assign({}, obj));
});
newArray[key].number = number
}

main_array = create_array();

change(main_array, 0, 20);

console.log(main_array, newArray)

关于javascript - jQuery 创建了新数组,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/47499769/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com