angularjs阵列拼接到另一个元素

angularjs array splice to another element

本文关键字:另一个 元素 拼接 阵列 angularjs      更新时间:2023-09-26

我的目标是创建一个类似旋转木马的函数,该函数将旋转最喜欢的课程列表。在代码中,我将数组分配给另一个作用域,并将其拼接为第一个视图。它运行良好。在拼接新阵列的同时,旧阵列也被拼接。输出与代码一起被提及。为什么原始数组也在更改。

获得以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;

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

$scope.favouriteCourses =  $scope.favouriteCoursesOriginal;

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

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

请注意,slice只会进行浅层复制。如果需要阵列中对象的副本,则需要分别复制这些副本。