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[] — новий масив без повторів, у порядку першої появи.
/**
* 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 !== ""));
}
Дивіться також
intersect — значення, спільні для кількох масивів, теж без повторів.