Javascript使用索引对多维数组进行排序

时间:2015-07-30 15:24:53

标签: javascript sorting multidimensional-array

我在确定要排序的数组的实际索引时遇到了问题。

我的清单有点乱:

    masterList =[];
    masterList.push([1,"NY","New York, NY 10036, United States",40.760262,-73.993286,"07/30/2015"]);
    masterList.push([2,"Chgo","Chicago, IL, United States",41.878113,-87.629799,"07/06/2015"]);
    masterList.push([3,"Japan","Japan",11.1111,-11.1111,"07/22/2015"]);
    masterList.push([4,"China","China",22.2222,-22.2222,"07/18/2015"]);

masterList.sort(sortdates());

function sortdates(a,b) {
        return function(a, b){
                a = Date(a[5]);
                console.log(a);
                b = Date(b[5]);
                return a - b;
            };
}

显然这不起作用。我希望能够在多维数组上获取第6个索引并按此排序。

我试着到处寻找..但是我没有一个与我的阵列相关的“钥匙”......所以我不能用它来指出它。 有什么建议吗?

3 个答案:

答案 0 :(得分:1)

看起来你有额外的功能。这样可以更好地工作,不需要返回另一个函数。

function sortdates(a,b) {
    a = new Date(a[5]);
    console.log(a);
    b = new Date(b[5]);
    return a - b;
}

然后您可以将sortdates(不包含())传递给

答案 1 :(得分:1)

有三个问题。首先,您应该将函数句柄传递给sort函数。您正在调用该函数。其次,函数不应该返回一个函数,应该接受两个参数。第三,也是最重要的,您需要创建日期对象的new个实例。它不是一种静态方法。

返回一个函数可以正常工作,所以你遇到的真正问题是缺少new关键字

    masterList =[];
    masterList.push([1,"NY","New York, NY 10036, United States",40.760262,-73.993286,"07/30/2015"]);
    masterList.push([2,"Chgo","Chicago, IL, United States",41.878113,-87.629799,"07/06/2015"]);
    masterList.push([3,"Japan","Japan",11.1111,-11.1111,"07/22/2015"]);
    masterList.push([4,"China","China",22.2222,-22.2222,"07/18/2015"]);

masterList.sort(sortdates);

function sortdates(a,b) {
                a = new Date(a[5]);
                console.log(a);
                b = new Date(b[5]);
                return a - b;
}

答案 2 :(得分:-1)

如何使用underscore.js?

然后您可以按如下方式使用sortBy

var sorted = _.sortBy(masterList, function(value){ return new Date(value[5]).getTime(); });

Here is a fiddle with the solution