function first<T>(array: T[]): T | undefined;
function first<T>(array: T[], n: number): T[];
function first<T>(array: T[], n?: number): T | T[] | undefined;
Mit einem Argument liefert first ein einzelnes Element und für ein leeres Array undefined statt einer Ausnahme — genau das erspart jeder Aufrufstelle ihre eigene Prüfung. Mit einer Anzahl kommt stattdessen ein neues Array zurück, sodass beide Formen zur Laufzeit nie unterschieden werden müssen.
n wird begrenzt wie bei Array#slice: eine negative Anzahl ergibt ein leeres Array, eine Anzahl über der Länge das ganze Array. Die Eingabe bleibt unverändert.
Parameter
Parameter
Typ
Beschreibung
array
T[]
Das Array, aus dem gelesen wird. Bleibt unverändert.
n(optional)
number
Wie viele Elemente genommen werden. Eine ganze Zahl; weglassen für ein einzelnes Element.
Rückgabewert
T | T[] | undefined — das erste Element oder ein neues Array mit höchstens n Elementen.
/**
* Splits a sheet into its header row and its data rows, and says so when the
* sheet turns out to be empty.
*/
export function readTable(sheet: GoogleAppsScript.Spreadsheet.Sheet): {
header: string[];
rows: string[][];
} {
const values = sheet.getDataRange().getValues() as string[][];
const header = first(values);
if (!header) {
throw new Error("The sheet is empty.");
}
return { header, rows: values.slice(1) };
}
function readTable(sheet) {
const values = sheet.getDataRange().getValues();
const header = first(values);
if (!header) {
throw new Error("The sheet is empty.");
}
return { header: header, rows: values.slice(1) };
}
Begrenzung
first([1, 2], 10); // => [1, 2] — never more than the array holds
first([1, 2], -1); // => []
first([1, 2], 1.5); // throws TypeError: Input 'n' must be an integer.