Javascript 角度范围,分隔阵列,使其不发生碰撞

Javascript 角度范围,分隔阵列,使其不发生碰撞,javascript,angularjs,Javascript,Angularjs,我使用了这个非常酷的isteven multi-select,当我在两个不同的地方需要相同的下拉列表时,我的问题就出现了。问题是,当我改变其中一个时,另一个也会改变,反之亦然 它们彼此无关,并且具有完全不同的变量名、字段名等。。他们唯一的共同点就是我给他们安排的地方 let tempList = [ { flag: "payCard.png", code: "Credit Card" }, { flag: "payBank

我使用了这个非常酷的isteven multi-select,当我在两个不同的地方需要相同的下拉列表时,我的问题就出现了。问题是,当我改变其中一个时,另一个也会改变,反之亦然

它们彼此无关,并且具有完全不同的变量名、字段名等。。他们唯一的共同点就是我给他们安排的地方

let tempList = [
    {
        flag: "payCard.png",
        code: "Credit Card"
    },
    {
        flag: "payBank.png",
        code: "Bank Transfer"
    },
    etc..
]
$scope.paymentList = tempList;
$scope.FooBaa      = tempList;
即使你这个圣堂武士被设置在一个早已被遗忘的功能中,他们仍然坚持分享它并相互复制

但是如果我这样做,那么它会起作用

let tempList = [
    {
        flag: "payCard.png",
        code: "Credit Card"
    },
    {
        flag: "payBank.png",
        code: "Bank Transfer"
    },
    etc..
]
$scope.paymentList = tempList;

let tempList2 = [
    {
        flag: "payCard.png",
        code: "Credit Card"
    },
    {
        flag: "payBank.png",
        code: "Bank Transfer"
    },
    etc..
]
$scope.FooBaa = tempList2;

有人能解释一下原因吗?这对我来说完全是个谜,已经煮了3个小时了

数组是引用类型,因此您只需将
FooBaa
指向内存中相同的精确数组:

$scope.paymentList = tempList;
$scope.FooBaa      = tempList; // same exact array (not duplicated)
也许你想要一份:

$scope.paymentList = tempList;
$scope.FooBaa      = angular.copy(tempList);

数组是引用类型,因此您只需将
FooBaa
指向内存中的同一个精确数组:

$scope.paymentList = tempList;
$scope.FooBaa      = tempList; // same exact array (not duplicated)
也许你想要一份:

$scope.paymentList = tempList;
$scope.FooBaa      = angular.copy(tempList);

哦,弗兰克!!我以为一个“let”会在你离开函数时被销毁:)-我需要一个副本!!非常感谢,我会立即尝试。@torbenrudgaard如果
let
在大括号内,而其余的代码则没有,那么您将无法访问该变量。但这确实与引用/值类型不同,但这只适用于与$scope相关的任何内容,对吗?我的意思是,如果你先做一个
myArray=[1,2,3,4]
,然后再做
youraray=myArray
,那么数组中的任何更改都不会反映在myArray中。对吗?@torbenrudgaard你也会有同样的问题。如果您改变一个数组,另一个变量也会显示更改,因为它们都是对同一个精确数组的引用。你可能想了解一下值类型和引用类型之间的区别。哦,弗兰克!!我以为一个“let”会在你离开函数时被销毁:)-我需要一个副本!!非常感谢,我会立即尝试。@torbenrudgaard如果
let
在大括号内,而其余的代码则没有,那么您将无法访问该变量。但这确实与引用/值类型不同,但这只适用于与$scope相关的任何内容,对吗?我的意思是,如果你先做一个
myArray=[1,2,3,4]
,然后再做
youraray=myArray
,那么数组中的任何更改都不会反映在myArray中。对吗?@torbenrudgaard你也会有同样的问题。如果您改变一个数组,另一个变量也会显示更改,因为它们都是对同一个精确数组的引用。您可能希望了解值类型和引用类型之间的差异。