apps-script-utils (Русский) 2.1.1 Help

unique

function unique<T, K = T>(array: T[], iteratee?: (value: T) => K): T[];

Значения сравниваются по правилу SameValueZero, которое использует Set: NaN дедуплицируется с NaN, чего === никогда не делает, а -0 схлопывается с 0. Порядок — порядок первого появления, исходный массив не изменяется.

Объекты сравниваются по ссылке, поэтому два объекта с одинаковым содержимым — это два значения. Необязательная функция iteratee задаёт ключ, по которому сравниваются значения: так записи дедуплицируются по идентификатору, а не по ссылке. При совпадении ключей побеждает значение, встреченное раньше.

Параметры

Параметр

Тип

Описание

array

T[]

Массив для дедупликации. Не изменяется.

iteratee (необязательный)

(value: T) => K

Функция, возвращающая ключ сравнения. Без неё значения сравниваются сами с собой.

Возвращает

T[] — новый массив без повторов, в порядке первого появления.

Исключения

Исключение

Условие

TypeError

array не является массивом.

Примеры

Дедупликация значений

unique([1, 2, 2, 3]); // => [1, 2, 3] unique(["a", "b", "a"]); // => ["a", "b"] unique([NaN, NaN]); // => [NaN] unique([0, -0]); // => [0]

Дедупликация записей по ключу

import { unique } from "apps-script-utils"; const rows = [ { id: 1, name: "first" }, { id: 1, name: "second" }, { id: 2, name: "third" } ]; unique(rows, (row) => row.id); // => [{ id: 1, name: "first" }, { id: 2, name: "third" }]

Сбор различных значений столбца

/** * Lists every status used in a column, each one once, in the order they first * appear. */ export function listStatuses(sheet: GoogleAppsScript.Spreadsheet.Sheet): string[] { const column = sheet.getRange("C2:C").getValues().flat() as string[]; return unique(column.filter((status: string): boolean => status !== "")); }
function listStatuses(sheet) { const column = sheet.getRange("C2:C").getValues().flat(); return unique(column.filter((status) => status !== "")); }

Смотрите также

Исходный код

src/lang/array/unique.ts

23 September 2026

Эта документация сгенерирована нейросетью (Claude) на основе исходного кода библиотеки.