Middle+
25
Карта/Жинақ және объектілер қалай көшіріледі? Жоғары деңгейлі және терең көшірме.
Сұралған компаниялар
М.Видео/эльдорадо
AI-дан жауап
sobes.tech AI
JavaScript-те Map, Set және объектілерді көшіру үшін үстірт және терең көшіру әдістері бар.
Үстірт көшіру:
- Объектілер үшін
Object.assign({}, obj)немесе кеңейту операторы{...obj}қолдануға болады. Бұл тек бірінші деңгейдегі қасиеттерді көшіріп, ішкі объектілер сілтеме ретінде қалады. - Map және Set үшін жаңа экземпляр құрып, бастапқы мәндерді конструкторға беру арқылы жасауға болады:
Бұл жаңа Map/Set құрып, сол элементтерді көшіріп алады, бірақ элементтер терең көшірілмейді.const newMap = new Map(oldMap); const newSet = new Set(oldSet);
Терең көшіру:
- Объектілер үшін рекурсивті функция қолдануға болады, ол ішкі объектілер мен массивтерді көшіріп алады.
- Map және Set үшін олардың элементтерін рекурсивті түрде көшіріп алу керек, егер олар да объектілер болса.
Мысал ретінде Map және Set бар объектінің терең көшірмесі:
function deepCopy(value) {
if (value instanceof Map) {
const copiedMap = new Map();
for (const [key, val] of value.entries()) {
copiedMap.set(key, deepCopy(val));
}
return copiedMap;
}
if (value instanceof Set) {
const copiedSet = new Set();
for (const val of value.values()) {
copiedSet.add(deepCopy(val));
}
return copiedSet;
}
if (Array.isArray(value)) {
return value.map(deepCopy);
}
if (value && typeof value === 'object') {
const copiedObj = {};
for (const key in value) {
if (value.hasOwnProperty(key)) {
copiedObj[key] = deepCopy(value[key]);
}
}
return copiedObj;
}
return value; // примитивтер
}
Осылайша, үстірт көшіру тек жоғарғы деңгейді көшірсе, ал терең — барлық ішкі құрылымдарды көшіріп алады.