我有一些不同的对象,但都有id
字段。我想创建一个Set()来保存这些,但我不知道如何将这个字段指定给Set构造函数/ prototype / etc。这可行吗?
我们说我有两种类型的对象(为了简单起见,我会给出打字稿定义):
interface Thing1 {
id: string;
someData: string[]
}
interface Thing2 {
id: string;
someString: string;
someOtherString: string
}
现在,我有两个这些东西的阵列,让我们称之为
array1: Thing1[];
array2: Thing2[];
我要做的是在new Set(array1)
中创建add
然后Thing2
每个array2
,执行两个数组的条件合并。
每个中的唯一键是id
字段 - 我希望有一些重载的构造函数或类似的模式可以给出一个lambda(la new Set(array1, (item) => item.id)
,也许),它将指定哈希身份的关键。
答案 0 :(得分:0)
使用Set非常简单......
想象一下,你有两个这样的对象:
const obj1 = {
id: 1,
prop: 'Foo'
};
const obj2 = {
id: 2,
prop: 'Bar'
};
要创建包含对这些对象的引用的Set,您可以这样做:
let set = new Set([obj1, obj2]);
或那:
let set = new Set();
set.add(obj1).add(obj2);
由于Set是一个可迭代对象,您可以使用for...of
循环来检索所有数据:
for (const obj of set) {
console.log(`${obj.id}:${obj.prop}`);
}