JS: Filter array of objects by max value per category

后端 未结 7 1489
北荒
北荒 2020-12-19 18:21

What is most efficient / elegant way to achieve sql-like filtering effect. I want to filter them and get only that objects which are max value in some group.

This is

相关标签:
7条回答
  • 2020-12-19 18:50

    I love to use lodash for stuff like this. It's very functional and therefore very clear and straightforward.

    Take a look at the following code:

    const DATA = [
      {
        name: "bathroom",
        value: 54,
        timeStamp: 1562318089713
      },
      {
        name: "bathroom",
        value: 55,
        timeStamp: 1562318090807
      },
      {
        name: "bedroom",
        value: 48,
        timeStamp: 1562318092084
      },
      {
        name: "bedroom",
        value: 49,
        timeStamp: 1562318092223
      },
      {
        name: "room",
        value: 41,
        timeStamp: 1562318093467
      }
    ];
    
    let max = _
      .chain(DATA)
      .groupBy('name')
      .sortBy('value')
      .map(o => _(o).reverse().first())
      .flatten()
      .value();
    
    console.log(max); // returns [{"name":"bathroom","value":55,"timeStamp":1562318090807},{"name":"bedroom","value":49,"timeStamp":1562318092223},{"name":"room","value":41,"timeStamp":1562318093467}]
    
    0 讨论(0)
提交回复
热议问题