Напишите функцию deepClone, которая создает глубокую копию объекта. Глубокая копия означает, что вложенные объекты и массивы также должны быть скопированы, а не переданы по ссылке. Функция должна корректно работать с вложенными структурами данных и массивами.
Пример кода:
const obj = {
name: "Alice",
info: { age: 25, hobbies: ["reading", "swimming"] }
};
const copy = deepClone(obj);
console.log(copy); // { name: "Alice", info: { age: 25, hobbies: ["reading", "swimming"] } }
copy.info.age = 30;
console.log(obj.info.age); // 25 (изменение не повлияло на оригинальный объект)
Решение задачи
function deepClone(obj) {
if (obj === null || typeof obj !== 'object') {
return obj;
}
if (Array.isArray(obj)) {
returnobj.map (deepClone);
}
const clone = {};
for (let key in obj) {
if (obj.hasOwnProperty(key)) {
clone[key] = deepClone(obj[key]);
}
}
return clone;
}
// Примеры использования
const obj = {
name: "Alice",
info: { age: 25, hobbies: ["reading", "swimming"] }
};
const copy = deepClone(obj);
console.log(copy); // { name: "Alice", info: { age: 25, hobbies: ["reading", "swimming"] } }
copy.info.age = 30;
console.log(obj.info.age); // 25 (изменение не повлияло на оригинальный объект
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
В статье расскажем, как Supabase — бесплатный аналог Google Firebase — помогает разработчикам быстро создавать приложения и сайты. Узнаете, как работать с базой данных, аутентификацией, хранением файлов и реальным временем, без необходимости управлять сервером.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
В этой статье рассмотрим, как форматировать ввод данных в формах для удобства пользователей. Обсудим проблемы существующих библиотек маскирования и предложим более эффективное собственное решение.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Однажды я спросил себя: а что, если использовать контейнерные единицы измерения для каждого элемента дизайна? Я задался этим вопросом, отчасти потому, что мне показалось, что ответ может быть таким: ну, тогда всё будет очень хорошо масштабироваться!
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Красивая анимация горения страницы при скролле. Сделана на CSS и JavaScript.
Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍7
В статье описывается, как NgRx помогает управлять состоянием приложения, работать с асинхронными операциями, улучшать производительность и упрощать масштабирование. Рассматриваются случаи, когда его внедрение наиболее оправдано.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Рабочая группа CSS выпустила новый модуль Values and Units Level 5: меньше кода, больше возможностей – звучит как мечта? Давайте вместе разберемся, как эти новшества изменят нашу работу и сделают веб красивее.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
Небольшая подборка малоизвестных техник для HTML, CSS и JavaScript.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4
object-fit
в CSS?Свойство
object-fit
позволяет управлять масштабированием содержимого (например, изображений или видео) внутри контейнера, не искажая его соотношение сторон. Это особенно полезно при создании адаптивных и аккуратных галерей.cover
:.container {
width: 300px;
height: 200px;
overflow: hidden;
}
.container img {
width: 100%;
height: 100%;
object-fit: cover;
}
🗣 Свойство object-fit помогает контролировать отображение изображений в контейнерах, не растягивая и не искажая их.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3
Отказавшись от неэффективных практик программирования на JavaScript, вы всегда будете писать удобный и легко читаемый код. Это сэкономит вам и вашей команде много времени и обеспечит долгую жизнь вашим продуктам.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1👎1
Подробное пошаговое руководство по созданию бессерверного приложения для того, чтобы повеселиться в хорошей компании.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Apache Superset — популярный инструмент для визуализации данных с открытым кодом. Но при его использовании можно столкнуться с ограничениями. В статье обсуждается, как с помощью шаблонов Handlebars и Jinja решать эти проблемы, включая интеграцию web-верстки в дашборды и обход ограничений системы.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Многие воспринимают ревью как проверку на ошибки. Но баги должны ловить тесты.
Please open Telegram to view this post
VIEW IN TELEGRAM
👍4❤1
Узнайте о новейшем и одновременно старейшем стандарте React для доступа к данным формы, а также о том, как использовать его с TypeScript.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
Если ты хочешь стать настоящим мастером API, тебе нужно знать о паттерне BFF. В этой статье рассказываем, как создавать управляемую архитектуру с использованием BFF, избегая избыточной сложности и головной боли при поддержке.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍2
z-index управляет тем, как элементы накладываются друг на друга в трёхмерном пространстве веб-страницы. Элементы с большим значением z-index будут отображаться поверх тех, у которых значение меньше.
z-index: 1
:.element1 {
position: relative;
z-index: 1;
}
.element2 {
position: relative;
z-index: 2;
}
🗣 Важно помнить, что свойство z-index работает только с элементами, у которых установлено позиционирование (position: relative, absolute, fixed или sticky).
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
Стильная карточка-портфолио с анимированными кнопками. Сделан на Svg, SCSS и JavaScript.
Открыть код...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍3❤1
Делимся пятью советами, которые помогут быстро разобраться в тонкостях работы с изображениями, переменными окружения, кэшированием и управлением компонентами в Next.js.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👎1
Статья рассказывает об архитектуре Inverted Triangle CSS, которая помогает масштабировать и поддерживать крупные CSS проекты. Обсуждаются причины выбора, пошаговая реализация и сравнение с другими подходами.
Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1
В мире веб-разработки оптимизация времени загрузки страниц имеет решающее значение. Два мощных атрибута тега
<script>
— async
и defer
— могут существенно повлиять на производительность сайта. Использование этих атрибутов без их глубокого понимания может негативно сказаться на производительности и привести к ошибкам. Давайте начнём с основ и узнаем, что делают эти атрибуты и когда их следует использовать.Читать...
Please open Telegram to view this post
VIEW IN TELEGRAM
👍1