Sorting 删除冗余排序代码
我正在按以下方式对数据进行排序。我使用的是击倒可观察Sorting 删除冗余排序代码,sorting,knockout.js,Sorting,Knockout.js,我正在按以下方式对数据进行排序。我使用的是击倒可观察 self.myObsArray1 = ko.observableArray(); self.myObsArray2 = ko.observableArray(); var sortData = false; self.myObsArray1 .sort(function (a, b) { if (sortData ) { return
self.myObsArray1 = ko.observableArray();
self.myObsArray2 = ko.observableArray();
var sortData = false;
self.myObsArray1 .sort(function (a, b) {
if (sortData ) {
return (a.Name() < b.Name() ? -1 : (a.Name() > b.Name() ? 1 : 0));
}
else {
return (b.Name() < a.Name() ? -1 : (b.Name() > a.Name() ? 1 : 0));
}
});
我们能否以某种方式删除此冗余代码?您可以使用助手功能创建分类器,从而使您的代码更简洁:
function createColumnSorter(column) {
return function(a, b) {
var valA = a[column]();
var valB = b[column]();
if (sortData) {
return (valA < valB ? -1 : (valA > valB ? 1 : 0));
} else {
return (valB < valA ? -1 : (valB > valA ? 1 : 0));
}
};
}
您可以使用助手功能创建分拣机,从而使您的代码更简洁:
function createColumnSorter(column) {
return function(a, b) {
var valA = a[column]();
var valB = b[column]();
if (sortData) {
return (valA < valB ? -1 : (valA > valB ? 1 : 0));
} else {
return (valB < valA ? -1 : (valB > valA ? 1 : 0));
}
};
}
您可以使用助手功能创建分拣机,从而使您的代码更简洁:
function createColumnSorter(column) {
return function(a, b) {
var valA = a[column]();
var valB = b[column]();
if (sortData) {
return (valA < valB ? -1 : (valA > valB ? 1 : 0));
} else {
return (valB < valA ? -1 : (valB > valA ? 1 : 0));
}
};
}
您可以使用助手功能创建分拣机,从而使您的代码更简洁:
function createColumnSorter(column) {
return function(a, b) {
var valA = a[column]();
var valB = b[column]();
if (sortData) {
return (valA < valB ? -1 : (valA > valB ? 1 : 0));
} else {
return (valB < valA ? -1 : (valB > valA ? 1 : 0));
}
};
}
对不起,模块输入错误。纠正了我的问题。我现在就来试试你的答案。它不是排序properly@Happy你能再具体一点吗?结果应该与您以前的代码完全相同(当然没有“Module”输入错误)。排序工作不正常,因为sortData变量有时会变为true和false。我已经在模型顶部声明了sortData变量。然后为它创建一个参数:
函数createColumnSorter(column,sortData)
,并这样调用它:self.myObsArray1.sort(createColumnSorter('Name'),sortData)代码>抱歉模块输入错误。纠正了我的问题。我现在就来试试你的答案。它不是排序properly@Happy你能再具体一点吗?结果应该与您以前的代码完全相同(当然没有“Module”输入错误)。排序工作不正常,因为sortData变量有时会变为true和false。我已经在模型顶部声明了sortData变量。然后为它创建一个参数:函数createColumnSorter(column,sortData)
,并这样调用它:self.myObsArray1.sort(createColumnSorter('Name'),sortData)代码>抱歉模块输入错误。纠正了我的问题。我现在就来试试你的答案。它不是排序properly@Happy你能再具体一点吗?结果应该与您以前的代码完全相同(当然没有“Module”输入错误)。排序工作不正常,因为sortData变量有时会变为true和false。我已经在模型顶部声明了sortData变量。然后为它创建一个参数:函数createColumnSorter(column,sortData)
,并这样调用它:self.myObsArray1.sort(createColumnSorter('Name'),sortData)代码>抱歉模块输入错误。纠正了我的问题。我现在就来试试你的答案。它不是排序properly@Happy你能再具体一点吗?结果应该与您以前的代码完全相同(当然没有“Module”输入错误)。排序工作不正常,因为sortData变量有时会变为true和false。我已经在模型顶部声明了sortData变量。然后为它创建一个参数:函数createColumnSorter(column,sortData)
,并这样调用它:self.myObsArray1.sort(createColumnSorter('Name'),sortData)当遇到优化问题时,你首先要问自己,你想优化什么?执行时间?内存使用情况?写了多少代码?可理解性?针尖指向问题缩小了解决方案的范围。如果需要考虑编写的代码量,那么您可以参考基于“将JavaScript对象的属性作为关联数组访问”原则的想法@IAN2TEDV我更改了问题的标题当出现优化问题时,您需要问自己的第一件事是,您希望优化什么?执行时间?内存使用情况?写了多少代码?可理解性?针尖指向问题缩小了解决方案的范围。如果需要考虑编写的代码量,那么您可以参考基于“将JavaScript对象的属性作为关联数组访问”原则的想法@IAN2TEDV我更改了问题的标题当出现优化问题时,您需要问自己的第一件事是,您希望优化什么?执行时间?内存使用情况?写了多少代码?可理解性?针尖指向问题缩小了解决方案的范围。如果需要考虑编写的代码量,那么您可以参考基于“将JavaScript对象的属性作为关联数组访问”原则的想法@IAN2TEDV我更改了问题的标题当出现优化问题时,您需要问自己的第一件事是,您希望优化什么?执行时间?内存使用情况?写了多少代码?可理解性?针尖指向问题缩小了解决方案的范围。如果需要考虑编写的代码量,那么您可以参考“将JavaScript对象的属性视为关联数组”这一原则的想法@IAN2TEDV i更改了问题的标题