1

変数を関数に渡して、次のようにソートする3つの配列を含む多次元配列を決定しようとしています:

wordData = [["john", "Bill", "Dan"],["Smith", "Adams", "Davidson"],[23, 45, 51]];

dataReader(1);

function dataReader(sortBy){

    wordData.sort(sortFunc)

    function sortFunc(a,b) {
        a = a[sortBy];
        b = b[sortBy];
        return a == b ? 0 : (a < b ? -1 : 1)
    }

}

後でリストボックスを設定し、各配列を 3 列に配置しました。変数はペアになっていると想定されているため、ジョン、スミス、23 は常に同じ行にあります。しかし、ソートをまったく機能させることができないようです

4

1 に答える 1

2

正しい配列をソートしていません。これを試して:

wordData = [["john", "Bill", "Dan"],["Smith", "Adams", "Davidson"],[23, 45, 51]];

dataReader(1);

function dataReader(arrIndex){

    var arr=wordData[arrIndex];
    var bools=[];
    var tmpArr=[];

    arr.sort(sortFunc);

    for(var i=0, j=wordData.length; i<j; i++) {
        if(i!=arrIndex) {
            tmpArr=bools.slice(0);
            wordData[i].sort(sortArr);
        }
    }

    function sortFunc(a,b) {
        var which=(a == b) ? 0 : (a < b ? -1 : 1);
        bools.push(which);
        return which;
    }
    function sortArr(a,b) {
        return tmpArr.shift();
    }
}

私があなたを正しく理解していれば、arrIndexはおそらくsortByよりも優れています。

于 2013-06-23T23:22:53.173 に答える