【发布时间】:2021-07-07 08:13:00
【问题描述】:
所以我有一个如下所示的数组:
[
{ date: '2021-07-07' },
{ date: '2021-07-07' },
{ date: '2021-07-07' },
{ date: '2021-07-08' },
{ date: '2021-07-09' },
{ date: '2021-07-10' },
{ date: '2021-07-10' }
];
如何拆分为 3 个数组(我的意思是 1 组用于唯一日期,另一组用于重复,但如果有超过 1 个重复组,则应分为另一组)
拆分后是这样的
Array 1
[{"date": "2021-07-07"},{"date": "2021-07-07"},{"date": "2021-07-07"}]
Array 2
[{"date": "2021-07-08"},{"date": "2021-07-09"}]
Array 3
[{"date": "2021-07-10"},{"date": "2021-07-10"}]
下面是我目前的代码,但它只有在副本上有 1 时才有效
const findDuplicates = arr => {
let sorted_arr = arr.slice().sort();
let result = [];
for (let i = 0; i < sorted_arr.length - 1; i++) {
if (sorted_arr[i + 1].date == sorted_arr[i].date) {
result.push(sorted_arr[i]);
}
}
return result;
};
const filterSame = arr => {
let temp = findDuplicates(arr);
const result = arr.filter(date => date.date == temp[0].date);
return result;
};
const filterUnique = array => {
let result = array.filter(
(e, i) => array.findIndex(a => a['date'] === e['date']) === i
);
let temp = findDuplicates(array);
result = result.filter(function(obj) {
return obj.date !== temp[0].date;
});
return result;
};
【问题讨论】:
-
为什么
2021-07-08和2021-07-09组合在一起? -
@adiga 因为这不仅仅是一个简单的分组。这是一个分组,然后只用一个元素聚合所有内容。
-
我将其理解为按日期对所有元素进行分组,其中有重复项,然后对所有唯一日期进行另一组。那主要基于预期结果TBH
-
@Jamiec 独特的去一个组,重复的去不同的组?
-
这就是我理解问题的方式。它的描述不是特别好,但肯定比一个简单的组更重要
标签: javascript arrays filter