Как Set object очищает все дубликаты в массиве и что такое regulat и multiset? - PullRequest
0 голосов
/ 03 октября 2018

Как Set.prototype удаляет любые дубликаты в этом алгоритме?

Цель функции - получить неопределенное количество аргументов (массивов) и вернуть новый массив уникальных значений из каждого из массивов.

Например, uniqueNums([2, 3, 4, 51], [23, 41, 3, 4, 51, 2], [2, 3, 99]) вернет array [2, 3, 4, 51, 23, 41, 51, 99]

function uniqueNums(...arrays) {
  const flatArray = [].concat(...arrays);
  return [...new Set(flatArray)];
}

Что такое regulat и multiset?

1 Ответ

0 голосов
/ 03 октября 2018

Сначала concat используется для создания однослойного массива из всех подчиненных массивов.

Затем new Set(flatArray) создает новый набор из flatArray, который равен итерация .По сути, это создает набор и вызывает add для каждой записи в flatArray.Set#add не добавляет значения, которые уже есть в наборе, поэтому new Set(flatArray) предоставляет набор уникальных значений (точка набора - уникальные значения).

Тогда [...theSet] использует распространите синтаксис , чтобы взять Set (который также является итеративным) и создать новый, плоский массив уникальных записей.

Например, этот код фактически таков:

function uniqueNums(...arrays) {
  const flatArray = [].concat(...arrays);
  // Create the set
  const set = new Set();
  // Add the entries; calling `add` with a value that's already in the set
  // doesn't do anything
  for (const entry of flatArray) {
    set.add(entry);
  }
  // Now `set` has unique values; get an array of them
  const result = [];
  for (const entry of set) {
    result.push(entry);
  }
  // Return the array
  return result;
}
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...