【问题标题】:filter array of objects by object value按对象值过滤对象数组
【发布时间】:2019-09-24 12:23:30
【问题描述】:

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

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

result = array.sort(2,7);

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

预期输出:-

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

【问题讨论】:

标签: javascript arrays sorting object


【解决方案1】:

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)}));

【讨论】:

    【解决方案2】:

    在下面使用。

    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"
    }]
    

    【讨论】:

    • filter = data.filter(function(d){ var date = new Date(d.metric_name); return (date >= new Date(start) && date
    • 这样就可以了 :)
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-11-12
    • 2019-05-04
    • 2017-09-06
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多