一次排序多个数组

Aus*_*est 2 javascript jquery

我有3个数组:

  • 阵列1是"名字"约翰,吉姆,杰克,吉尔

  • 阵列2是"年龄"25,30,31,22

  • 阵列3是"性别"男性,男性,男性,女性

我将这些都列在一个带有可排序标题的表中.现在排序工作正常,它按"名称"列进行排序.我怎样才能对"年龄"和"性别"数组进行排序以保持正确.我需要同时对所有3个进行排序.

_nameArray.sort(function(a, b){
    return ((a < b) ? -1 : ((a > b) ? 1 : 0));
})
Run Code Online (Sandbox Code Playgroud)

希望它解释得很好.

没有结构不能改变,它的方式必须是3个数组,而不是一个,只是按数组中的字段排序.

Ale*_*der 14

即使从多个阵列构造对象可能是理想的.您也可以在没有使用间接的对象创建开销的情况下执行此操作.

/* An array of indexes */
var idx = [];
for (var i = 0; i < Name.length; i++) {
    idx.push(i);
}

/* A shorthand function */
var comparator = function(arr) {
    return function(a, b) {
        return ((arr[a] < arr[b]) ? -1 : ((arr[a] > arr[b]) ? 1 : 0));
    };
};

/* Sort by Age */
idx = idx.sort(comparator(Age));

/* Get the sorted order */
for (var i = 0; i < Name.length; i++) {
    console.log(Name[idx[i]], Age[idx[i]], Gender[idx[i]]);
}?
Run Code Online (Sandbox Code Playgroud)

idx数组包含其他数组元素的索引idx[i].通过使用间接,您可以访问元素Name,AgeGender; 就是,Name[idx[i]].

如果性能是一个问题,那么使用就地排序可以更快地构建对象,如果你只做一次.否则,我会使用间接而不会触及真正的数组.

你去吧

注意:该comparator函数只是一个示例,您需要根据您的条件实际创建自己的比较器函数.


Ric*_*ick 0

如果你想对表中的数据进行排序,你应该看看Tablesorter