以下是(简化后的)JSON数据类型,定义了一个联系人:
```html
在上面的示例中,这意味着具有ID 1、3、5的联系人属于同一组,因为1、3共享相同的电子邮件,3和5共享相同的电话号码。同样,2,6,7: 2 和 6 具有相同的名称, 6 和 7 共享相同的电子邮件。5没有任何共同之处。因此预期结果是:[[1,3,5], [2,6,7]]。
背景: 一种有效的解决方案是对每个项目进行迭代,并检查列表的余下部分是否具有相同的名称、电子邮件或电话。如果是,则将它们分组并从列表中取出(在示例中,我们将1与列表中的所有项进行比较,只发现3)。问题是需要再次检查下一个项目是否属于这些组,因为在这种情况下还未检测到5作为组的一部分。这使得算法变得复杂,而我怀疑在线性时间内解决这个问题的简单方法。这种类问题可能也有一个名称?
以下是(简化后的)JSON数据类型,定义了一个联系人:
```{
id: number;
name: string;
phone: string;
email: string
}
有以下一组数据:
+---+----------+-------------+---------------------------+
|id | name | phone |email |
+---+----------+-------------+---------------------------+
|1 | John | 11111111 |aaaa@test.com |
|2 | Marc | 22222222 |bbbb@test.com |
|3 | Ron | 99999999 |aaaa@test.com |
|4 | Andrew | 55555555 |dddd@test.com |
|5 | Wim | 99999999 |gggg@test.com |
|6 | Marc | 33333333 |cccc@test.com |
|7 | Dan | 44444444 |cccc@test.com |
+---+----------+-------------+---------------------------+
目标是使用JavaScript(可选Lodash,但主要思路是清晰的算法)找到属于同一组的联系人,根据以下约束条件:当名称、电话或电子邮件相同时,联系人属于一个组。结果显示作为数组的ID分组的数组。属于1组的联系人将被忽略。在上面的示例中,这意味着具有ID 1、3、5的联系人属于同一组,因为1、3共享相同的电子邮件,3和5共享相同的电话号码。同样,2,6,7: 2 和 6 具有相同的名称, 6 和 7 共享相同的电子邮件。5没有任何共同之处。因此预期结果是:[[1,3,5], [2,6,7]]。
背景: 一种有效的解决方案是对每个项目进行迭代,并检查列表的余下部分是否具有相同的名称、电子邮件或电话。如果是,则将它们分组并从列表中取出(在示例中,我们将1与列表中的所有项进行比较,只发现3)。问题是需要再次检查下一个项目是否属于这些组,因为在这种情况下还未检测到5作为组的一部分。这使得算法变得复杂,而我怀疑在线性时间内解决这个问题的简单方法。这种类问题可能也有一个名称?
99999999
?它会是[[1, 2, 3, 5, 6, 7]]
吗? - Josep