过滤数组的数组以仅保留每个 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
- 日期
3/20/2018
周围缺少引号。如果没有引号,这将只是一个浮点数
- 您的子数组有 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));
如何过滤这个数组
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
- 日期
3/20/2018
周围缺少引号。如果没有引号,这将只是一个浮点数 - 您的子数组有 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));