Weboldal keresés

Ellenőrizze, hogy a tömb üres-e, vagy tartalmazza-e az értéket, TypeScript


Így ellenőrzöm, hogy a tömb tartalmazza-e az értéket:

testArray.includes(value)

Ugyanazt a műveletet kell végrehajtanom, ha a tömb üres VAGY ha tartalmazza az értéket. Tehát van ez a feltételem:

if (testArray == [] || testArray.includes(value)) {
    // do something
}

De a typescript megpróbálja végrehajtani ennek a feltételnek a második részét, még akkor is, ha testArray == []. Így egy hibát kapok: testArray.includes nincs definiálva.

Értem, hogy így tudom megjavítani:

if (testArray == []) {
    // do something
} else if (testArray.includes(value)) {
    // do the same thing
}

De nem néz ki jól. Van mód rá, hogy egy if-be tegyük?

testArray egy OpenAPI lekérdezési paraméter, ha ez fontos.

Válasz #1

A tömb egy referencia típus. Amikor [ ]-vel szeretnéd ellenőrizni, nem egyenlők. Különböznek; ezt a feltételt length-szel ellenőrizni jobb. Tehát, a kódod alapján valami ilyesmit kellene csinálnod:

if (!testArray || testArray.length == 0 || testArray.includes(value)) {
    // do something
}

Válasz #2

function isValueInArrayOrEmpty(updated) {
    console.log(Boolean(updated instanceof Array && (updated.length == 0 || (updated.length > 0 && updated.includes(value)))));
}
let value = "hello";
let updated = [];
isValueInArrayOrEmpty(updated);
let updated2 = "hello";
isValueInArrayOrEmpty(updated2);
let updated3 = Object;
isValueInArrayOrEmpty(updated3);
let updated4 = [Object];
isValueInArrayOrEmpty(updated4);
let updated5 = ["hello"];
isValueInArrayOrEmpty(updated5);
let updated6 = ["not hello"];
isValueInArrayOrEmpty(updated6);

VM815:2 true
VM815:2 false
VM815:2 false
VM815:2 false
VM815:2 true
VM815:2 false

Kapcsolódó cikkek