Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/414.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/arrays/14.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 按月-年和周-年对数组排序_Javascript_Arrays - Fatal编程技术网

Javascript 按月-年和周-年对数组排序

Javascript 按月-年和周-年对数组排序,javascript,arrays,Javascript,Arrays,我有一个数组,如下所示: var monthYear = ["1-2016", "7-2015", "7-2016", "3-2016", "8-2016", "2-2016", "6-2016", "8-2015", "5-2016", "4-2016", "9-2015", "10-2015", "11-2015", "12-2015"]; var monthYear = ["7-2015", "8-2015", "9-2015", "10-2015", "11-2015", "12-20

我有一个数组,如下所示:

var monthYear = ["1-2016", "7-2015", "7-2016", "3-2016", "8-2016", "2-2016", "6-2016", "8-2015", "5-2016", "4-2016", "9-2015", "10-2015", "11-2015", "12-2015"];
var monthYear = ["7-2015", "8-2015", "9-2015", "10-2015", "11-2015", "12-2015", "1-2016", "2-2016", "3-2016", "4-2016", "5-2016", "6-2016", "7-2016", "8-2016"];
在这个数组中,我显示月份和年份,我希望按月份和年份进行排序,如下所示:

var monthYear = ["1-2016", "7-2015", "7-2016", "3-2016", "8-2016", "2-2016", "6-2016", "8-2015", "5-2016", "4-2016", "9-2015", "10-2015", "11-2015", "12-2015"];
var monthYear = ["7-2015", "8-2015", "9-2015", "10-2015", "11-2015", "12-2015", "1-2016", "2-2016", "3-2016", "4-2016", "5-2016", "6-2016", "7-2016", "8-2016"];
这几周也是如此

var weekYear = ["2015-30", "2015-31", "2015-32", "2015-33", "2015-34", "2015-35", "2015-36", "2015-37", "2015-38", "2015-39", "2015-40", "2015-41", "2015-42", "2015-44", "2015-49", "2016-06", "2016-09", "2015-43", "2015-45", "2015-46", "2015-47", "2015-48", "2015-50", "2015-51", "2015-52", "2016-01", "2016-02", "2016-03", "2016-04", "2016-05", "2016-07", "2016-08", "2016-10", "2016-11", "2016-12", "2016-13", "2016-14", "2016-15", "2016-16", "2016-17", "2016-18", "2016-19", "2016-20", "2016-21", "2016-22", "2016-23", "2016-24", "2016-25", "2016-26", "2016-27", "2016-28", "2016-29", "2016-30", "2016-31", "2016-32"];
下订单

var weekYear = ["2015-30", "2015-31", "2015-32", "2015-33", "2015-34", "2015-35", "2015-36", "2015-37", "2015-38", "2015-39", "2015-40", "2015-41", "2015-42", "2015-43", "2015-44", "2015-45", "2015-46", "2015-47", "2015-48", "2015-49", "2015-50", "2015-51", "2015-52", "2016-01", "2016-02", "2016-03", "2016-04", "2016-05", "2016-06", "2016-07", "2016-08", "2016-09", "2016-10", "2016-11", "2016-12", "2016-13", "2016-14", "2016-15", "2016-16", "2016-17", "2016-18", "2016-19", "2016-20", "2016-21", "2016-22", "2016-23", "2016-24", "2016-25", "2016-26", "2016-27", "2016-28", "2016-29", "2016-30", "2016-31", "2016-32"];
我尝试使用此功能,但不起作用:

monthYear = monthYear.sort(sortNumber);

function sortNumber(elem1, elem2){
        var as = elem1.split('-');
        var bs = elem2.split('-');
        if(parseInt(as[0])< parseInt(bs[0])){
          if(parseInt(as[1]) < parseInt(bs[1])){
            return -1;
          }else if(parseInt(as[1]) > parseInt(bs[1])){
            return 1;
          }else{
            return 0;
          }
        }else if(parseInt(as[0]) > parseInt(bs[0])){
          return 1;
        }
        return 0;
      }
monthYear=monthYear.sort(sortNumber);
函数sortNumber(elem1,elem2){
var as=元素1.拆分('-');
var bs=元素分割('-');
if(parseInt(as[0])parseInt(bs[1])){
返回1;
}否则{
返回0;
}
}else if(parseInt(as[0])>parseInt(bs[0])){
返回1;
}
返回0;
}

与周类似,我想知道函数是否错误,或者是否有更简单的方法来实现它。

您可以用字符串创建一个
日期
,并按照以下顺序进行排序:

var monthYear = ["1-2016", "7-2015", "7-2016", "3-2016", "8-2016", "2-2016", "6-2016", "8-2015", "5-2016", "4-2016", "9-2015", "10-2015", "11-2015", "12-2015"];

var sorted = monthYear.sort(function(a,b) {
    a = a.split("-");
    b = b.split("-")
    return new Date(a[1], a[0], 1) - new Date(b[1], b[0], 1)
});
console.log(sorted);
// --> ["7-2015", "8-2015", "9-2015", "10-2015", "11-2015", "12-2015", "1-2016", "2-2016", "3-2016", "4-2016", "5-2016", "6-2016", "7-2016", "8-2016"]
并对本周进行分类:


您可以从字符串中创建一个
日期
,并根据以下内容对其进行排序:

var monthYear = ["1-2016", "7-2015", "7-2016", "3-2016", "8-2016", "2-2016", "6-2016", "8-2015", "5-2016", "4-2016", "9-2015", "10-2015", "11-2015", "12-2015"];

var sorted = monthYear.sort(function(a,b) {
    a = a.split("-");
    b = b.split("-")
    return new Date(a[1], a[0], 1) - new Date(b[1], b[0], 1)
});
console.log(sorted);
// --> ["7-2015", "8-2015", "9-2015", "10-2015", "11-2015", "12-2015", "1-2016", "2-2016", "3-2016", "4-2016", "5-2016", "6-2016", "7-2016", "8-2016"]
并对本周进行分类:


您可以拆分字符串并按优先级排序,而无需使用
日期
var monthYear=[“1-2016”、“7-2015”、“7-2016”、“3-2016”、“8-2016”、“2-2016”、“6-2016”、“8-2015”、“5-2016”、“4-2016”、“9-2015”、“10-2015”、“11-2015”、“12-2015”],
weekYear=[“2015-30”,“2015-31”,“2015-32”,“2015-33”,“2015-34”,“2015-35”,“2015-36”,“2015-37”,“2015-38”,“2015-39”,“2015-40”,“2015-41”,“2015-42”,“2015-44”,“2015-49”,“2016-06”,“2016-09”,“2015-43”,“2015-45”,“2015-46”,“2015-47”,“2015-48”,“2015-50”,“2015-51”,“2015-52”,“2016-01”,“2016-02”,“2016-03”,“2016-05”,"2016-07", "2016-08", "2016-10", "2016-11", "2016-12", "2016-13", "2016-14", "2016-15", "2016-16", "2016-17", "2016-18", "2016-19", "2016-20", "2016-21", "2016-22", "2016-23", "2016-24", "2016-25", "2016-26", "2016-27", "2016-28", "2016-29", "2016-30", "2016-31", "2016-32"];
monthYear.sort(函数排序(a,b){
var aa=a.split('-'),
bb=b.分裂('-');
返回aa[1]-bb[1]| | aa[0]-bb[0];
});
sort(函数排序(a,b){
var aa=a.split('-'),
bb=b.分裂('-');
返回aa[0]-bb[0]| | aa[1]-bb[1];
});
控制台日志(每月);

console.log(weekYear);
您可以拆分字符串并按优先级排序,而无需使用
Date
var monthYear=[“1-2016”、“7-2015”、“7-2016”、“3-2016”、“8-2016”、“2-2016”、“6-2016”、“8-2015”、“5-2016”、“4-2016”、“9-2015”、“10-2015”、“11-2015”、“12-2015”],
weekYear=[“2015-30”,“2015-31”,“2015-32”,“2015-33”,“2015-34”,“2015-35”,“2015-36”,“2015-37”,“2015-38”,“2015-39”,“2015-40”,“2015-41”,“2015-42”,“2015-44”,“2015-49”,“2016-06”,“2016-09”,“2015-43”,“2015-45”,“2015-46”,“2015-47”,“2015-48”,“2015-50”,“2015-51”,“2015-52”,“2016-01”,“2016-02”,“2016-03”,“2016-05”2016-07", "2016-08", "2016-10", "2016-11", "2016-12", "2016-13", "2016-14", "2016-15", "2016-16", "2016-17", "2016-18", "2016-19", "2016-20", "2016-21", "2016-22", "2016-23", "2016-24", "2016-25", "2016-26", "2016-27", "2016-28", "2016-29", "2016-30", "2016-31", "2016-32"];
monthYear.sort(函数排序(a,b){
var aa=a.split('-'),
bb=b.分裂('-');
返回aa[1]-bb[1]| | aa[0]-bb[0];
});
sort(函数排序(a,b){
var aa=a.split('-'),
bb=b.分裂('-');
返回aa[0]-bb[0]| | aa[1]-bb[1];
});
控制台日志(每月);

log(weekYear);
只需使用填充连接并返回差异

功能板(num){
返回字符串(“0”+num).slice(-2);
}
功能排序xxyear(elem1,elem2){
变量as=elem1.split('-'),
bs=元素拆分('-'),
aa=as[1]+pad(as[0]),//yyyymm
bb=bs[1]+焊盘(bs[0]);
返回aa-bb;
}
var monthYear=[“1-2016”,“7-2015”,“7-2016”,“3-2016”,“8-2016”,“2-2016”,“6-2016”,“8-2015”,“5-2016”,“4-2016”,“9-2015”,“10-2015”,“11-2015”,“12-2015”];
月排序(sortXXYear);

log(monthYear);
只需使用填充连接并返回差异

功能板(num){
返回字符串(“0”+num).slice(-2);
}
功能排序xxyear(elem1,elem2){
变量as=elem1.split('-'),
bs=元素拆分('-'),
aa=as[1]+pad(as[0]),//yyyymm
bb=bs[1]+焊盘(bs[0]);
返回aa-bb;
}
var monthYear=[“1-2016”,“7-2015”,“7-2016”,“3-2016”,“8-2016”,“2-2016”,“6-2016”,“8-2015”,“5-2016”,“4-2016”,“9-2015”,“10-2015”,“11-2015”,“12-2015”];
月排序(sortXXYear);

console.log(monthYear);
这里是monthYear的工作代码:

var monthYear = ["1-2016", "7-2015", "7-2016", "3-2016", "8-2016", "2-2016",
                    "6-2016", "8-2015", "5-2016", "4-2016", "9-2015", "10-2015",
                    "11-2015", "12-2015"];
function sortMonthYear(myarray){
    let temp;
    let tempArr=new Array(myarray.length);
    //make sort friendly
    for (i=0; i<myarray.length; i++){
        temp = myarray[i].split('-');
        if(temp[0]<10){
            temp[0]= "0"+temp[0];
        }
        tempArr[i] =temp[1]+'-'+temp[0];
    }
    //use sort
    tempArr.sort();
    //back to previous format
    for (i=0; i<tempArr.length; i++){
        temp = tempArr[i].split('-');
        if (temp[1].charAt(0)==0){
            temp[1]= temp[1].substring(1);
        }
        tempArr[i] = temp[1]+'-'+temp[0];
    }
    return tempArr;
}
var monthYear = sortMonthYear(monthYear);
console.log(monthYear)
var monthYear=[“1-2016”、“7-2015”、“7-2016”、“3-2016”、“8-2016”、“2-2016”,
"6-2016", "8-2015", "5-2016", "4-2016", "9-2015", "10-2015",
"11-2015", "12-2015"];
函数sortMonthYear(myarray){
让温度;
设tempArr=newarray(myarray.length);
//使排序友好

对于(i=0;i这里是工作代码,对于monthYear:

var monthYear = ["1-2016", "7-2015", "7-2016", "3-2016", "8-2016", "2-2016",
                    "6-2016", "8-2015", "5-2016", "4-2016", "9-2015", "10-2015",
                    "11-2015", "12-2015"];
function sortMonthYear(myarray){
    let temp;
    let tempArr=new Array(myarray.length);
    //make sort friendly
    for (i=0; i<myarray.length; i++){
        temp = myarray[i].split('-');
        if(temp[0]<10){
            temp[0]= "0"+temp[0];
        }
        tempArr[i] =temp[1]+'-'+temp[0];
    }
    //use sort
    tempArr.sort();
    //back to previous format
    for (i=0; i<tempArr.length; i++){
        temp = tempArr[i].split('-');
        if (temp[1].charAt(0)==0){
            temp[1]= temp[1].substring(1);
        }
        tempArr[i] = temp[1]+'-'+temp[0];
    }
    return tempArr;
}
var monthYear = sortMonthYear(monthYear);
console.log(monthYear)
var monthYear=[“1-2016”、“7-2015”、“7-2016”、“3-2016”、“8-2016”、“2-2016”,
"6-2016", "8-2015", "5-2016", "4-2016", "9-2015", "10-2015",
"11-2015", "12-2015"];
函数sortMonthYear(myarray){
让温度;
设tempArr=newarray(myarray.length);
//使排序友好
对于(i=0;i
constmysort=(a,b)=>{
常数[ma,ya]=a.split('-').map(x=>Number(x))
常量[mb,yb]=b.split('-').map(x=>Number(x))
返回yayb-1:mamb-1:0
}
常数ywsort=(a,b)=>{
常数[ya,wa]=a.split('-').map(x=>Number(x))
常量[yb,wb]=b.split('-').map(x=>Number(x))
返回yayb-1:wawb-1:0
}
monthYear.sort(mysort)
weekYear.sort(ywsort)
constmysort=(a,b)=>{
常数[ma,ya]=a.split('-').map(x=>Number(x))
常量[mb,yb]=b.split('-').map(x=>Number(x))