【发布时间】:2018-06-11 15:09:55
【问题描述】:
我有两个可观察数组,我需要从第一个数组中删除元素并推送到第二个数组,反之亦然。但是当我这样做时,字母排序就搞砸了。
self.allCourses = ko.observableArray([]);
self.selectedCourses = ko.observableArray([]);
我将在两个数组之间交换课程,并使用这个:
self.sortArrays = function(){
self.allCourses.sort(function (l, r) {
return l.code() < r.code() ;
});
self.selectedCourses.sort(function (l, r) {
return l.code() < r.code() ;
});
}
不仅效率不高,而且没有按预期工作;我每次调用这些函数之一时都会调用该函数
self.addCourse = function(course){
self.selectedCourses.push(course);
self.allCourses.remove(course);
self.sortArrays();
};
self.removeCourse = function(course){
self.allCourses.push(course);
self.selectedCourses.remove(course);
self.sortArrays();
};
【问题讨论】:
-
为什么在添加时删除课程,反之亦然?
-
在
sort函数中返回<永远不会按预期工作。您应该返回一个正值、0 或负值。 -
这些是专业,所以我实际上是在填写专业的课程,反之亦然,将它们从专业中删除
-
@Isac 这可能是一个很好的注意事项,但即使这个有效,它仍然很耗时,尤其是在有很多课程时
标签: javascript algorithm sorting knockout.js