Per tutte quelle volte dove abbiamo bisogno di filtrare via i falsy values (0
, undefined
, null
, false
, NaN
) da un array possiamo semplicemente fare così:
const filteredArray = array.filter(Boolean);
Il costruttore Boolean
infatti trasformerà i falsy values in false
e la filter
farà il resto.
La destrutturazione ci permette di riasumere un codice come il seguente:
const name = person.name;
const address = person.address;
In un più comodo:
const { name, address } = person;
La cosa interessante sta nel fatto che possiamo rinominare le proprietà estratte per evitare eventuali conflitti con quelle già presenti nello scope:
const { name: personName, address: personAddress } = person;
Per essere sicuri che una qualche variabile contenga un oggetto non è sufficiente il controllo con l'operatore typeof
perché, per un noto bug, anche typeof null
è "object"
. Il modo corretto è il seguente:
function isObject(v) {
return v !== null && typeof v === "object";
}
Un discorso a parte lo meritano le funzioni perché tecnicamente sarebbero oggetti anche esse, ma raramente è necessario considerarle tali. Ad ogni modo, in caso di necessità, possiamo modificare leggermente isObject
per riconoscere anche le funzioni:
function isObject(v) {
return v !== null && (typeof v === "object" || typeof v === "function");
}
Che dire se invece vogliamo essere sicuri che una variabile sia un array? Ecco come fare:
function isArray(v) {
return Array.isArray(v);
}