我有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,Age和Gender; 就是,Name[idx[i]].
如果性能是一个问题,那么使用就地排序可以更快地构建对象,如果你只做一次.否则,我会使用间接而不会触及真正的数组.
注意:该comparator函数只是一个示例,您需要根据您的条件实际创建自己的比较器函数.