我在确定要排序的数组的实际索引时遇到了问题。
我的清单有点乱:
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个索引并按此排序。
我试着到处寻找..但是我没有一个与我的阵列相关的“钥匙”......所以我不能用它来指出它。 有什么建议吗?
答案 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(); });