Pogadajmy dziś o magicznym operatorze in. Czemu magicznym? Bo wiele razy o nim słyszałam, ale w praktyce – nigdy go nie widziałam.
Szczypta teorii
Operator in służy do sprawdzenia, czy dany obiekt zawiera określoną właściwość.
Przykład:
const obj = { a: 1, b: 2, c: 3 };
"a" in obj; // true
"d" in obj; // false
const arr = ["one", "two", "three"];
0 in arr; //true
3 in arr; //false
"one" in arr; //false Ok, fajnie – powiesz – ale po co w ogóle z niego korzystać? Czym on różni się od składni obj[prop]?
Ekhm, dobre pytanie.
Po co mi to?
Dobrze jest sprawdzać za pomocą operatora in obecność właściwości, które mogą posiadać nieprawdziwe wartości (lub bardziej zrozumiale – po prostu falsy values).
Przypomnijmy sobie podstawowe wartości, które w świecie JS są falsy, czyli konwertują się do false lub są równoznaczne false:
falsenull;NaN;0;- pusty ciąg znaków (
""/''/``); undefined.
Dla przykładu – sprawdźmy obecność właściwości o nieprawdziwych wartościach za pomocą składni obj[prop] oraz operatora in:
const obj = { a: undefined, b: "", c: false };
typeof obj["a"] === "undefined"; //true
"a" in obj; // true
obj.b === ""; //true
"b" in obj; // true
obj["c"] === false //true
"c" in obj; //true Widzimy teraz, że operator in wydaje się być najbardziej bezpieczną, uniwersalną metodą na sprawdzanie właściwości o nieprawdziwych wartościach.
Uwaga!
Kiedy korzystasz z operatora in, bądź czujny w przypadku usuwania wartości! Pamiętaj – aby je skutecznie usunąć, musisz użyć operatora delete.
const obj = { a: 1 };
"a" in obj; // true
delete obj.a;
"a" in obj; // false
const arr = ["one", "two", "three"];
1 in arr; //true
delete arr[1];
1 in arr; //false A teraz powiedz szczerze – znałeś wcześniej operator in? Czy go stosowałeś w praktyce? Koniecznie napisz mi w komentarzu odpowiedzi na te pytania. Jestem szalenie ciekawa, ilu z Was odpowie na oba pytania TAK!

