按对象值过滤对象数组

时间:2019-09-24 12:23:30

标签: javascript arrays sorting object

尝试按对象的开始和结束值过滤对象数组。

start = "Feb-2015"
end = "Jul-2015"

result = array.sort(2,7);

已经尝试过了,但是我有日期,我将不知道它的索引。     数组= [       {         “ date”:“ 2015年1月”       },       {         “ date”:“ 2015年2月”       },       {         “ date”:“ 2015年3月”       },       {         “ date”:“ 2015年4月”       },       {“ date”:“ 2015年5月”       },       {,         “ date”:“ 2015年6月”       },       {“ date”:“ 2015年7月”       },       {         “ date”:“ 2015年8月”       }     ]

预期输出:-

result = [
      {
        "date": "Feb-2015"
      },
      {
        "date": "Mar-2015"
      },
      {
        "date": "Apr-2015"
      },
      {    "date": "May-2015"
      },
      {,
        "date": "Jun-2015"
      },
      { 
        "date": "Jul-2015"
      }
]

2 个答案:

答案 0 :(得分:0)

在下面使用。

array = [{
    "date": "Jan-2015"
  },
  {
    "date": "Aug-2015"
  },
  {
    "date": "Feb-2015"
  },
  {
    "date": "Mar-2015"
  },
  {
    "date": "Apr-2015"
  },
  {
    "date": "May-2015"
  },
  {
    "date": "Jun-2015"
  },
  {
    "date": "Jul-2015"
  }

];

//filter
sort = (arr, start, end) => {
  let arrayFiltered = arr.filter((obj) => {
    obj.dateObj = new Date(obj.date.substring(0, 3) + obj.date.substring(4, 8));

    return (obj.dateObj.getMonth() + 1) >= start && (obj.dateObj.getMonth() + 1) <= end;
  });

  console.log(arrayFiltered.sort(obj => obj.dateObj));
};

sort(array, 2, 7);

输出

[{
  "date": "Feb-2015",
  "dateObj": "2015-01-31T18:30:00.000Z"
}, {
  "date": "Mar-2015",
  "dateObj": "2015-02-28T18:30:00.000Z"
}, {
  "date": "Apr-2015",
  "dateObj": "2015-03-31T18:30:00.000Z"
}, {
  "date": "May-2015",
  "dateObj": "2015-04-30T18:30:00.000Z"
}, {
  "date": "Jun-2015",
  "dateObj": "2015-05-31T18:30:00.000Z"
}, {
  "date": "Jul-2015",
  "dateObj": "2015-06-30T18:30:00.000Z"
}]

答案 1 :(得分:0)

const data = [{"date":"Jan-2018"},{"date":"Feb-2015"},{"date":"Mar-2015"},{"date":"Apr-2015"},{"date":"May-2015"},{"date":"Jun-2015"},{"date":"Jul-2015"},{"date":"Aug-2015"}];

console.log(data.sort((a, b) => { return new Date(a.date) - new Date(b.date)}));