javascript排序多维数组

时间:2013-11-30 23:14:25

标签: javascript arrays sorting multidimensional-array

所以我在javascript中有一个多维数组(不能使用php),并希望通过变量“filename”和“size”对其进行排序。我从其他网站获得了数组(通过xml动态数据)。 我的var看起来像这样(从许多其他代码中提取,询问你是否需要其他代码):

    var id = new Array();
var filename = new Array();
var url = new Array();
var size = new Array();
var creationDate = new Array();
var mimetype = new Array();
var thumbnailAvailable = new Array();

我怎么能对它们进行排序?我需要在这些数组上使用数组吗?

感谢您的帮助!

1 个答案:

答案 0 :(得分:1)

var id = [ 'bId', 'aId', 'cId', 'eId', 'dId', 'cId' ];
var filename = [ 'b', 'a', 'c', 'e', 'd', 'c' ];
var url = [ 'aa', 'bb', 'ccx', 'ee', 'dd', 'ccy' ];
var size = [ 1, 1, 2, 1, 1, 1 ];
var creationDate = [ 0, 1, 2, 3, 4, 5 ];
var mimetype = [ 'x', 'y', 'x', 'y', 'x', 'x' ];
var thumbnailAvailable = [ false, false, false, false, true, false ];

var fileData = [];
for ( var i = 0; i < id.length; ++i )
{
    fileData.push( {
                    id: id[i],
                    filename: filename[i],
                    url: url[i],
                    size: size[i],
                    creationDate: creationDate[i],
                    mimetype: mimetype[i],
                    thumbnailAvailable: thumbnailAvailable[i]
                   } );
}
fileData.sort( function(a,b){
    if ( a.filename < b.filename )
        return -1;
    if ( a.filename > b.filename )
        return 1;
    return a.size - b.size;
} );

for (var i = 0; i < fileData.length; ++i )
    alert( fileData[i].filename + " - " + fileData[i].size );

JSFiddle