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)