javascript - 使用变量对多维数组进行排序

标签 javascript arrays function

我试图将一个变量传递给一个函数来决定哪个数组是一个包含 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 列中,变量应该是成对的,所以 John、Smith 和 23 总是在同一行。但我似乎根本无法进行排序

最佳答案

您没有对正确的数组进行排序。试试这个:

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 更好,如果我没理解错的话。

关于javascript - 使用变量对多维数组进行排序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17266188/

相关文章:

javascript - 在 angularjs 工厂中使用 setInterval

python - Numpy,避免3d数组差异嵌套求和中的循环

python - 尝试在定义循环中使用双重条件(?)

Javascript 函数参数评估

r - 将这些参数传递给另一个函数时如何将默认元素添加到 `...`

javascript - 加载 gif 图像未在 IE 和 chrome 中显示

javascript - 使用 Promises 发出 ajax 请求时如何访问 http header ?

javascript - 我如何使用angularJS从JSON结果中提取对象

c++ - 二维数组的行为

php - 需要把mysql的数据以某种格式打印成json