Как сохранить список / набор ключей и удалить другие? - PullRequest
0 голосов
/ 05 августа 2020

Мне нужно объединить 2 карты. Map1 и Map2. Мне также нужно убедиться, что из Map2 к результирующей карте добавляются только указанные c ключи (хранящиеся в предопределенном наборе).

Чтобы объединить карты, я пробовал следовать, и он работает, но не уверен, как подойти в моем втором требовании:

let mergedMap:Map<string, number> = new Map([...Array.from(map1.entries()), ...Array.from(map2.entries())]);

Ответы [ 2 ]

1 голос
/ 05 августа 2020
map1 = new Map<string, number>();
map2 = new Map<string, number>();
mergedMap= new Map<string, number>();
predefinedKeys = [ 'AA', 'BB' ];

// merge map and filter
mergedMap = new Map([...Array.from(map1.entries()), 
   ...Array.from(map2.entries()).filter(([key]) => {
   return predefinedKeys.indexOf(key.toString()) > -1;
  })
]);

// print here
mergedMap.forEach((value: string, key: string) => {
  console.log(key, value);
 });
1 голос
/ 05 августа 2020

Вы были на правильном пути, все, что вам нужно сделать, это отфильтровать вторую карту любыми ключами, которые вы можете определить:

const predefinedKeys = [ 'foo', 'bar' ];

const mergedMap: Map<string, number> = new Map([
  ...Array.from(map1.entries()),
  ...Array.from(map2.entries().filter(([ key ]) => predefinedKeys.includes(key)))
]);
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...