我试图将一个变量传递给一个函数来决定哪个数组是一个包含 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/