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
