【问题标题】:Sorting Four Dimensional array - Javascript排序四维数组 - Javascript
【发布时间】:2014-08-03 17:23:40
【问题描述】:

我想使用下面的方法对 1 列的四维数组进行排序,

var main_arr = [
    []
];
var hdnFromValues = [11,16,12,17,14,18,15];
var hdnToValues = [12,17,13,18,15,19,16];
var hdnSPIDs = [11,12,13,14,0,0,0];
var hdnFlag = [D,E,E,D,A,A,A];
for (var j = 0; j < hdnFromValues.length; j++) {
    var temp_arr = [];
    var HdnToValue;
    temp_arr.push(hdnFromValues[j]);
    temp_arr.push(hdnToValues[j]);
    temp_arr.push(hdnSPIDs[j]);
    temp_arr.push(hdnFlag[j]);
    main_arr.push(temp_arr);
    temp_arr = null;
}
main_arr.sort(sort_by_col);
hdnFrom = "";
hdnTo = "";
spid = "";
flags = "";
for (var i = 1; i < main_arr.length; i++) {
    hdnFrom = hdnFrom.concat(main_arr[i][0], ",");
    hdnTo = hdnTo.concat(main_arr[i][1], ",");
    spid = spid.concat(main_arr[i][2], ",");
    flags = flags.concat(main_arr[i][3], ",");
}
hdnFrom = hdnFrom.substring(0, hdnFrom.length - 1);
hdnTo = hdnTo.substring(0, hdnTo.length - 1);
spid = spid.substring(0, spid.length - 1);
flags = flags.substring(0, flags.length - 1);
alert(hdnFrom);
alert(hdnTo);
alert(spid);
alert(flags);

function sort_by_col(a, b) {
    return a[0] - b[0];
}

有时,第 3 列和第 4 列未按照第 1 列正确排列。

有人会帮助我吗?

JSFilddle

【问题讨论】:

  • 给出你的完整代码和失败案例,什么时候?
  • 你按第一个列排序,为什么第 3 或第 4 个排序比偶然的多?
  • @dandavis 排序第一列,基于整行应该改变。
  • @VijayakumarS:是的,行移动了,但是您需要查看您对它进行排序的内容。如果你从不检查后面的列,除了巧合之外,它们怎么会被排序?
  • 那至少是一个二维数组,如果不是一维array of (number-indexed) objects

标签: javascript jquery multidimensional-array


【解决方案1】:

改变,

function sort_by_col(a, b) {
    return a[0] - b[0];
}

function sort_by_col(a, b) {
    return a[0] - b[0] || a[1] - b[1];
}

【讨论】:

    猜你喜欢
    • 2013-08-02
    • 2017-10-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-12-13
    • 2011-10-23
    相关资源
    最近更新 更多