Трюк 1: Определение типа данных — примитивный или объект?
В JavaScript существуют два основных типа данных: примитивные и непримитивные. Примитивные включают такие типы как boolean, null, undefined, number, string, BigInt и Symbol, всего их 7. Непримитивные типы представлены объектами.
Иногда возникает необходимость выяснить, какой тип данных хранится в переменной — примитивный или объект? Рассмотрим следующий пример:
var val; // переменная может содержать данные любого типа: примитивного или непримитивного
Для этого можно воспользоваться простым и элегантным решением:
function isPrimitive(val) {
return Object(val) !== val;
}
Здесь происходит следующее: при оборачивании значения в объект, если это примитивный тип, будет создан новый объект. Если же значение уже является объектом, то будет возвращен тот же объект. Таким образом, сравнивая результат с исходным значением, можно определить, является ли тип данных примитивным или нет.
Трюк 2: Создание по-настоящему пустого объекта
Прежде чем создать «чистый» объект, давайте уточним, что такое пустой объект в JavaScript. Обычно объект создается так:
var obj = {};
Однако, такой объект уже наследует множество функций из прототипа Object. Если вы хотите создать объект, который не содержит никаких наследуемых методов, вы можете использовать следующий подход:
var obj = Object.create(null);
В этом случае создается объект, у которого отсутствует прототип, и, следовательно, он не содержит никаких встроенных методов.
Трюк 3: Удаление дубликатов из массива
Предположим, у вас есть массив, содержащий дублирующиеся элементы:
var arr = [1, 2, 3, 3, 4, 5, 6, 6, 7, 7, 7, 7];
Для удаления повторяющихся значений можно использовать Set — структуру данных, которая хранит только уникальные элементы:
const newArr = [...new Set(arr)];
Этот код преобразует массив в объект Set, который автоматически удаляет все дублирующиеся значения, а затем с помощью оператора ... (spread) преобразует его обратно в массив, содержащий только уникальные элементы.
Эти простые, но мощные трюки помогут вам эффективно работать с типами данных, объектами и массивами в JavaScript.