gpt4 book ai didi

typescript - 我如何检查 typescript 中的数组列表中是否有重复项?

转载 作者:行者123 更新时间:2023-12-04 00:58:07 31 4
gpt4 key购买 nike

您好目前我的 typescript 代码中有一个这样的数组。我如何检查我的数组中是否有一个项目出现了两次。我想要创建函数,如果传递的数组包含重复元素,它将返回 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

如果您确实想要积极主动并且只使用您的阵列而不需要重复,您可以覆盖设置逻辑:

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"]

关于typescript - 我如何检查 typescript 中的数组列表中是否有重复项?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58751750/

31 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com