我的目标是创建一个类似旋转木马的功能,它将旋转喜爱的课程列表。在代码上,我将数组分配给另一个范围并将其拼接为第一个视图。它工作正常。在拼接新阵列时,旧阵列也会被拼接。输出与代码一起提到。为什么原始数组也在变化。
获得以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;
答案 0 :(得分:1)
以下代码行不会按原始数组的值进行复制。它只会导致favoriteCourses
变量引用相同的数组。
$scope.favouriteCourses = $scope.favouriteCoursesOriginal;
您应该使用javascipt slice
函数来创建副本
$scope.favouriteCourses = $scope.favouriteCoursesOriginal.slice();
请注意,slice
只会采用浅色副本。如果您需要阵列中对象的副本,则需要单独复制它们。