JavaScript Set(),具有在

时间:2017-04-14 00:11:01

标签: javascript typescript set

我有一些不同的对象,但都有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),也许),它将指定哈希身份的关键。

1 个答案:

答案 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}`);
}