过滤数组的数组以仅保留每个 ID 具有最新日期的元素

Filter Array of Arrays To Retain Only Elements With Latest Dates Per ID

如何过滤这个数组

    var arr = [[1, "3/20/2018", "A"], [1, "3/20/2018", "B"], 
               [1, "4/20/2018", "A"], [1, "4/20/2018", "B"], 
               [2, "1/30/2018", "A"], [2, "1/30/2018", "B"], 
               [2, "3/30/2018", "A"], [2, "3/30/2018", "B"]
              ];

我只想过滤每个其他子元素 (ID) 具有最新日期的元素。要获得此输出:

var result = [[1, "4/20/2018", "A"], [1, "4/20/2018", "B"],
              [2, "3/30/2018", "A"], [2, "3/30/2018", "B"]
             ];

一些observations/assumptions

  1. 日期 3/20/2018 周围缺少引号。如果没有引号,这将只是一个浮点数
  2. 您的子数组有 3 个项目,其中第一个和最后一个项目形成一个唯一的组合 (ID)。

基于以上,您可以尝试以下

var arr = [[1, "3/20/2018", "A"], [1, "3/20/2018", "B"], [1, "4/20/2018", "A"], [1, "4/20/2018", "B"], [2, "1/30/2018", "A"], [2, "1/30/2018", "B"], [2, "3/30/2018", "A"], [2, "3/30/2018", "B"]];
             
   var obj = {};
   
   arr.forEach(function(item){
     var id = item[0] + "_" + item[2];
     if(obj[id]) {
       if(new Date(item[1]) > new Date(obj[id][1])) {
          obj[id] = item;  
       }
     } else {
       obj[id] = item;
     }
  });
   
  console.log(Object.values(obj));