如何检查打字稿中的数组列表中是否有重复项?

2024-03-09

您好,目前我的打字稿代码中有一个这样的数组。我如何检查数组中是否有一个项目出现两次。我希望创建函数,如果传递的数组包含重复元素,它将返回 true 或 false。

  let tagonTypes: Array<string> = [];
  tagonTypes.push("NTM");
  tagonTypes.push("MCD");

上面的数组中没有重复项,因此该函数应返回 false。

  let tagonTypes: Array<string> = [];
  tagonTypes.push("NTM");
  tagonTypes.push("NTM");

在上面的数组中,我的函数应该返回 true,因为“NTM”被重复。

知道我的函数是什么样子的吗

谢谢


如果您只需要检查是否添加了重复项,则可以使用设置大小:

function hasDuplicates<T>(arr: T[]): boolean {
  return new Set(arr).size < arr.length;
}

hasDuplicates(["A", "A"]) // true
hasDuplicates(["A", "B"]) // false

您还可以使用代理对象来了解何时添加重复项,因为它们被添加到数组中:

const myArray1 = ["a", "b"];

const myArrayProxy1 = new Proxy(myArray1, {
  set: (target, property, value) => {
    const exits = target.includes(value);
    if (exits) {
      console.log(`Duplicate index ${property.toString()}, value: ${value}`);
    }
    return true;
  }
});

myArrayProxy1.push("a", "a", "b", "c");
// Prints:
// Duplicate index 2, value: a
// Duplicate index 3, value: a
// Duplicate index 4, value: b

If您确实想要主动并只使用您的阵列而无需重复,您可以覆盖设置逻辑:

const myArray2 = ["a", "b"];

const myArrayProxy2 = new Proxy(myArray2, {
  get: (target, property) => {
    return Reflect.get(target.filter(Boolean), property);
  },
  set: (target, property, value) => {
    const exits = target.includes(value);
    return exits ? true : Reflect.set(target, property, value);
  }
});

myArrayProxy2.push("a", "a", "b", "c");
console.log([...myArrayProxy2]); // - Prints: ["a", "b", "c"]
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

如何检查打字稿中的数组列表中是否有重复项? 的相关文章

随机推荐

  • 在 Swift 中子类化 UINavigationBar

    我正在尝试创建一个自定义UINavigationBar类 然后使用Storyboard将其设置为我的班级UINavigationController的导航栏 这是我的代码UINavigationBar class class CustomN
  • 使用外部服务的 Shopify 自定义搜索

    我的情况 我们有一个 Shopify 商店 我们还有一个在 AWS 上实施和托管的搜索引擎 我们需要使用该搜索引擎而不是 Shopify 商店中的默认 search 理想情况下 当用户尝试搜索某些内容时 他们的查询 以及可能的其他内容 例如
  • C++ 静态变量总是在主线程上被破坏吗?

    简短的问题 C 11 静态 非线程本地 变量是否总是在主线程上分散注意力 它们是否总是仅在程序退出时被销毁 考虑到我们不手动调用它们的析构函数 UPDATE 为了简洁起见 我们假设调用了析构函数 我们没有拔掉插头 我们没有杀死 9 全局对象
  • 使用“Runtime.getRuntime().exec”从 Java 启动的进程无法访问文件系统位置

    从 Java 启动的进程Runtime getRuntime exec权限较少 我在 JavaDocs 中没有看到对此的描述以及如何管理它 如何保证启动的进程具有相同的环境和权限 更多细节 编写轻量级 Eclipse 插件maven htt
  • 安全 Rust 中的转换会导致运行时错误吗?

    我正在摆弄一点Any和铸造只是为了更深入地了解 Rust 从 C 开始 我已经习惯了强制转换可能导致运行时异常 因为在 C 中强制转换基本上意味着亲爱的编译器 相信我 我知道我在做什么 请将其转换为int32因为我知道它会起作用 但是 如果
  • R中的正态分布图[关闭]

    Closed 这个问题不符合堆栈溢出指南 help closed questions 目前不接受答案 我正在尝试使用plot命令在r中绘制正态分布 plot x dnorm x mean sd 使用我的平均值和标准差值 然而 使用这些值 y
  • 从 C# 调用 NetValidatePasswordPolicy 始终返回密码必须更改

    我们有一个使用 Active Directory 来验证用户身份的 mvc 应用程序 我们正在利用System DirectoryServices并使用PricipalContext验证 principalContext ValidateC
  • 如何在 OS 10.6 (Snow Leopard) 上解决此 PostgreSQL 错误

    我按照以下说明设置 postgresql这个网站 http www robbyonrails com articles 2010 02 08 installing ruby on rails passenger postgresql mys
  • 输入图像中的通道数无效

    我在运行程序时收到错误 我特别考虑了 OpenCV 库中的颜色操作 我正在尝试构建一个程序 从 Raspberry Pi 摄像头获取视频并对其进行分析 我想找到视频中最亮的点 并计算该点距视频源中心的距离和角度 我正在做的项目将相机指向一个
  • GTK焦点链

    Currently I m working on a pyGTK3 application for which I want to set the focus chain When using the code below simplifi
  • 将一个系列分配给 Pandas DataFrame 的几行

    我有一个用索引和列准备的 pandas DataFrame 所有值都是 NaN 现在我计算了一个结果 该结果可用于 DataFrame 的多行 并且我想一次将它们全部分配 这可以通过循环来完成 但我很确定这个分配可以一次完成 这是一个场景
  • 如何在给定解决方案中评估在与用于生成上述解决方案的模型不同的模型中声明的谓词

    假设我们有两个模块A和B A在B中打开 您从 A 生成一个解决方案 并在 B 中有一些参数化谓词 这些谓词仅对 A 的元素进行推理 但由于某些原因 您不能将这些谓词放入模块 A 中 如何在 A 生成的解决方案中评估 B 中声明的谓词 以下是
  • 未找到与团队 ID“*****”和私钥匹配的“iOS 开发”签名证书

    我已经创建了一个新的配置开发证书 但 xcode 不接受它 并显示错误 找不到与团队 ID 匹配的 iOS Development 签名证书和私钥 如何解决这个错误 有时 即使您有有效的证书 Xcode 也会抛出此错误 这是因为您的帐户以某
  • 如何以二进制形式打印长整型?

    我正在尝试以二进制形式打印 Long 但它总是被切断0的 有没有办法强制它显示所有位 这是我的代码 long l 1 System out println Long toBinaryString long l 仅按提及的方式返回1由于删除了
  • 无法找到属性 - 从 NHibernate 3 切换到 3.3.1 后出现异常

    我有一个带有字段的类 protected DateTime insertDate 这是该字段的映射
  • 最佳拟合散点图线

    我正在尝试在 matlab 中用最适合的线绘制散点图 我可以使用 scatter x1 x2 或 scatterplot x1 x2 获得散点图 但基本拟合选项被遮蔽并且 lsline 返回错误 未找到允许的线型 什么也没做 任何帮助都会很
  • 验证 SSL/X.509 证书是否由另一个证书签名

    Question 如何使用 PyOpenSSL 或 Twisted 验证 X 509 证书是否由另一个证书签名 我希望客户端验证收到的服务器证书是否是签署其客户端证书的证书 我浏览了 PyOpenSSL 文档 似乎找不到任何关于如何与建立
  • 无法在 Golang 中的 GET 请求标头中传递 Bearer 令牌

    我正在使用 oauth2 访问第三方 API 我可以正常获取访问令牌 但是当我尝试通过在请求标头中传递不记名令牌来调用 API 时 会出现 401 未经授权 错误 尽管当我尝试通过 POSTMAN 通过将标头传递为 Authorizatio
  • 屏蔽张量的损失

    假设我有像这样的 logits 4 3 0 5 2 7 0 0 0 5 2 3 0 0 0 显然 第一个示例中的最后两个和第二个示例中的最后三个被屏蔽 即它们为零 并且不应影响损失和梯度计算 如何计算此 logits 和相应标签之间的交叉熵
  • 如何检查打字稿中的数组列表中是否有重复项?

    您好 目前我的打字稿代码中有一个这样的数组 我如何检查数组中是否有一个项目出现两次 我希望创建函数 如果传递的数组包含重复元素 它将返回 true 或 false let tagonTypes Array