angularjs数组拼接到另一个元素

时间:2015-03-22 19:10:55

标签: javascript arrays angularjs

我的目标是创建一个类似旋转木马的功能,它将旋转喜爱的课程列表。在代码上,我将数组分配给另一个范围并将其拼接为第一个视图。它工作正常。在拼接新阵列时,旧阵列也会被拼接。输出与代码一起提到。为什么原始数组也在变化。

获得以3的倍数显示的圆形课程列表的最佳逻辑是什么。

 $scope.favouriteCoursesOriginal = [

    {title:'courseA', stars:5, image:'image.png'},
    {title:'courseB', stars:5, image:'image.png'},
    {title:'courseC', stars:5, image:'image.png'},
    {title:'courseD', stars:5, image:'image.png'},
    {title:'courseE', stars:5, image:'image.png'},
    {title:'courseF', stars:5, image:'image.png'},
    {title:'courseG', stars:5, image:'image.png'},
    {title:'courseH', stars:5, image:'image.png'},
    {title:'courseI', stars:5, image:'image.png'}
];

     console.log($scope.favouriteCoursesOriginal.length); //Output = 9;
    $scope.favouriteCourses =  $scope.favouriteCoursesOriginal;
    $scope.favouriteCourses.splice(0,3);
    console.log($scope.favouriteCoursesOriginal.length); //Output = 6;

1 个答案:

答案 0 :(得分:1)

以下代码行不会按原始数组的值进行复制。它只会导致favoriteCourses变量引用相同的数组。

$scope.favouriteCourses =  $scope.favouriteCoursesOriginal;

您应该使用javascipt slice函数来创建副本

$scope.favouriteCourses =  $scope.favouriteCoursesOriginal.slice();

请注意,slice只会采用浅色副本。如果您需要阵列中对象的副本,则需要单独复制它们。