Oh MyUtils

列表比较器 - 在线比较两个列表并找出差异

比较两个列表,使用集合运算找出唯一项、重复项、交集和并集 — 100%客户端处理,数据不发送到服务器。

区分大小写
去除空格
删除空行
排序
列表 A
列表 B
仅在 A

未找到项目

常见问题

什么是列表比较器?为什么需要它?

列表比较器是一种工具,它获取两个列表的项目并执行集合运算,以找出差异、共同元素和组合结果。它对于数据核对任务至关重要,例如比较电子邮件订阅者列表、验证数据库迁移、审核服务器配置等。

如何使用这个列表比较工具?

在列表A和列表B的文本区域中输入项目,每行一个。工具会在您输入时自动实时比较列表。结果按标签页组织:仅在A、仅在B、交集、并集和对称差。

我的数据安全吗?列表会上传到服务器吗?

您的数据100%安全,永远不会离开您的浏览器。所有比较操作都在浏览器中使用JavaScript在客户端执行。不会将数据传输到任何服务器,也不会存储数据。

差集和对称差有什么区别?

差集(A - B)给出在列表A中但不在列表B中的项目。它是有方向性的。对称差(A XOR B)给出在任一列表中但不在两者中的所有项目。

大小写敏感性如何影响比较?

当大小写敏感性启用时(默认),Apple和apple被视为不同的项目。当禁用时,它们被视为相同的项目。

统计中显示的Jaccard相似度指数是什么?

Jaccard指数衡量两个集合的相似程度。计算方法是交集大小除以并集大小。0表示没有共同项目,1(100%)表示列表完全相同。

工具如何处理单个列表中的重复项?

工具检测每个列表中的重复项,并在重复A和重复B标签页中显示出现次数。对于集合运算,每个唯一项目无论出现多少次都只计算一次。

这个工具能处理非常大的列表吗?

可以。该工具使用在现代浏览器中高度优化的JavaScript Set运算。最多100,000个项目的列表可以在500毫秒内完成比较。

代码示例

// List comparison using JavaScript Set operations
function compareLists(listA, listB, options = {}) {
  const { caseSensitive = true, trimWhitespace = true } = options;

  const normalize = (item) => {
    let result = item;
    if (trimWhitespace) result = result.trim();
    if (!caseSensitive) result = result.toLowerCase();
    return result;
  };

  const itemsA = listA.map(normalize).filter(Boolean);
  const itemsB = listB.map(normalize).filter(Boolean);

  const setA = new Set(itemsA);
  const setB = new Set(itemsB);

  const onlyInA = [...setA].filter((item) => !setB.has(item));
  const onlyInB = [...setB].filter((item) => !setA.has(item));
  const intersection = [...setA].filter((item) => setB.has(item));
  const union = [...new Set([...setA, ...setB])];
  const symmetricDiff = [...onlyInA, ...onlyInB];

  const jaccardIndex = union.length > 0
    ? intersection.length / union.length : 0;

  return { onlyInA, onlyInB, intersection, union, symmetricDiff,
    stats: { jaccardIndex: Math.round(jaccardIndex * 1000) / 1000 } };
}

// Usage
const a = ['apple', 'banana', 'cherry', 'date'];
const b = ['banana', 'date', 'elderberry', 'fig'];
const result = compareLists(a, b);
console.log('Only in A:', result.onlyInA);
// ['apple', 'cherry']
console.log('Intersection:', result.intersection);
// ['banana', 'date']

相关工具