gpt4 book ai didi

javascript - jQuery 数组循环中的奇怪行为

转载 作者:行者123 更新时间:2023-11-28 13:32:20 25 4
gpt4 key购买 nike

我在使用以下代码时遇到问题:

var samount = [{value:100, name:'USD'},
{value:200, name:'USD'},
{value:100, name:'USD'}];
var object1 = new Array;
objects1 = samount;
var categories1 = new Array();
var groupedObjects1 = [];
var output1 = '';
var i = 0;

console.log(samount);

_.each(objects1,function(obj){
var existingObj;

if($.inArray(obj.currency,categories1) >= 0) {
existingObj = _.find(objects1,function(o){return o.currency === obj.currency;});
existingObj.value += obj.value;
} else {
groupedObjects1[i] = obj;
categories1[i] = obj.currency;
i++;
}
});

console.log(samount);
console.log(groupedObjects1);

问题是我不希望 samount 变量在循环后发生变化,所以我这样做了:

var object1 = new Array;
objects1 = samount;

此脚本的目标是对相同货币的所有值进行求和,但仍然不会弄乱初始数组。但它仍然改变了初始数组。谁能帮我解决这个错误吗?

最佳答案

用切片复制数组

var objects1 = samount.slice(0);

数组和对象是通过“引用”传递的(不是真的,但在这里并不重要),因此当将数组分配给新变量时,您得到的只是对同一数组的引用,而不是新数组。

关于javascript - jQuery 数组循环中的奇怪行为,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/23979488/

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