在第一个数字上排序多维数组

时间:2014-09-23 16:33:24

标签: javascript arrays sorting multidimensional-array

这是我的数组,例如:

25 test1, 50 test 50, 10 item ten,100 test100 hi,75 seventy five ok, alpha menu item, bravo ok

我尝试了这个功能,我在这里找到了:

function arraySort(pArray) {
    pArray.sort(
        function(a,b) {
            var len=a.length;
            for (var i=0;i<len;i++) {
                if (a[i]>b[i]) return 1;
                else if (a[i]<b[i]) return -1;
            }          
            return 0;
        }
    );
}

但不能以某种方式排序。只想在第一个项目上对多维数组进行排序只是一个数字。好吧,我猜是一个角色,如果是这样的话。

谢谢你们的帮助。

麦克

3 个答案:

答案 0 :(得分:0)

这应该有效:http://jsfiddle.net/xqhtf2z4/

function arraySort(pArray) {
    pArray.sort(
        function(a,b) {
            if ((isNaN(a[0]) && isNaN(b[0])) || (!isNaN(a[0]) && !isNaN(b[0]))) {
                if (a[0] > b[0]) {
                    return 1;
                }
                else if (a[0] < b[0]) {
                    return -1;
                }
                else {
                    return 0;
                }
            }
            else {
                if (isNaN(a[0])) {
                    return 1;
                }
                else { // isNaN(b[0]) == true
                    return -1;
                }
            }       
        }
    );
}

答案 1 :(得分:0)

var arr = ["bravo ok", "alpha menu item", "25 test1", "50 test 50", "10 item ten","100 test100 hi","75 seventy five ok"];
arr.sort(function(a,b){return a.localeCompare(b);})

输出是:

["10 item ten", "100 test100 hi", "25 test1", "50 test 50", "75 seventy five ok", "alpha menu item", "bravo ok"]

对我来说很好。

答案 2 :(得分:0)

var yourArray = ['25 test1', '50 test 50', '10 item ten', '100 test100 hi', '75 seventy five ok', 'alpha menu item', 'bravo ok'];

function arraySort(pArray) {
    return pArray.sort(function(a, b) {
        var an = parseInt(a), bn = parseInt(b);
        return an > bn  || isNaN(bn) ? -1 : bn > an || isNaN(an) ? 1 : 0;
    });
}

// now call arraySort
var sortedArray = arraySort( yourArray );