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

compact

function compact<T>(array: Array<T | Falsy>): T[];

compact выбрасывает false, null, undefined, 0, -0, 0n, "" и NaN, а остальное возвращает новым массивом. Исходный массив не изменяется.

Смысл этой функции по сравнению с array.filter(Boolean) — в типе: TypeScript сохраняет исходный тип элемента при filter(Boolean), поэтому вызывающему коду приходится вручную убирать null. compact возвращает T[] без приведения типа.

Обратите внимание: 0 и "" тоже считаются ложными. Для данных из таблицы это обычно не то, что нужно — 0 полноценное число, а пустая ячейка приходит как "", — и тогда правильнее array.filter(nonNil), который убирает только отсутствующие значения.

Параметры

Параметр

Тип

Описание

array

Array<T \| Falsy>

Массив для очистки. Не изменяется.

Возвращает

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

Исключения

Исключение

Условие

TypeError

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

Примеры

Отбрасывание ложных значений

compact([0, 1, false, 2, "", 3, null]); // => [1, 2, 3] compact([NaN, undefined]); // => [] compact([0, ""]); // => [] — both are falsy

Чтение столбца без пустых ячеек

The column arrives as Array<string | null> and leaves as string[], with no cast in between.

/** * Reads a column of identifiers and drops the blanks, without a cast: * `compact` returns `string[]`, not `Array<string | null>`. */ export function readIds(sheet: GoogleAppsScript.Spreadsheet.Sheet): string[] { const column = sheet.getRange("A2:A").getValues().flat() as Array<string | null>; return compact(column); }
function readIds(sheet) { const column = sheet.getRange("A2:A").getValues().flat(); return compact(column); }

Когда nonNil подходит лучше

import { nonNil } from "apps-script-utils"; const cells = [0, "", 5, null]; // a column read from a sheet compact(cells); // => [5] — drops the legitimate 0 and the empty cell cells.filter(nonNil); // => [0, "", 5] — drops only the absent values

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

Исходный код

src/lang/array/compact.ts

23 September 2026

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