자바 스크립트에서 맵을 어떻게 복제 / 복사하나요?
어레이를 복제하는 방법을 알고 있지만 맵을 복제 / 복사하려면 어떻게합니까?
var myArray = new Array(1, 2, 3);
var copy = myArray.slice();
// now I can change myArray[0] = 5; & it wont affect copy array
// Can I just do the same for map?
var myMap = new ?? // in javascript is it called a map?
var myMap = {"1": 1, "2", 2};
var copy = myMap.slice();
답변
단순 복사를 수행하는 간단한 방법은 소스 맵의 각 속성을 대상 맵에 복사하는 것입니다.
var newMap = {};
for (var i in myMap)
newMap[i] = myMap[i];
참고 : newMap [i]는 myMap [i]와 동일한 객체에 대한 참조 일 수 있습니다.
답변
자바 스크립트에지도가 도입됨에 따라 생성자가 이터 러블을 허용한다는 점을 고려하면 매우 간단합니다.
var newMap = new Map(existingMap)
문서 : https://developer.mozilla.org/en-US/docs/Web/JavaScript/Reference/Global_Objects/Map
답변
당신이 말하는 것은 단지 객체이기 때문에 맵을 복제하는 것은 매우 간단합니다. Map
ES6 에는 조회해야하는 항목이 있지만 객체를 복사하려면 다음을 사용하십시오.Object.assign()
let map = {"a": 1, "b": 2}
let copy = Object.assign({}, map);
cloneDeep()
Lodash 에서도 사용할 수 있습니다.
let copy = cloneDeep(map);
답변
JQuery에는 객체를 확장 (두 객체 병합)하는 방법이 있지만이 방법은 빈 객체를 제공하여 객체를 복제하는 데 사용할 수도 있습니다.
// Shallow copy
var newObject = jQuery.extend({}, oldObject);
// Deep copy
var newObject = jQuery.extend(true, {}, oldObject);
더 많은 정보는 jQuery 문서 에서 찾을 수 있습니다 .
답변
내장 된 것이 없습니다.
잘 테스트 된 재귀 속성 복사기를 사용하거나 성능이 문제가되지 않는 경우 JSON으로 직렬화하고 새 개체로 다시 구문 분석합니다.
답변
기본 제공 클론 / 복사본이 없습니다. 얕은 또는 전체 복사에 고유 한 메서드를 작성할 수 있습니다.
function shallowCopy(obj) {
var result = {};
for (var i in obj) {
result[i] = obj[i];
}
return result;
}
function deepCopy(obj) {
var result = {};
for (var i in obj) {
// recursion here, though you'll need some non-trivial logic
// to avoid getting into an endless loop.
}
return result;
}
Javascript의 모든 개체는 동적이며 새 속성을 할당 할 수 있습니다. “지도”는 실제로는 빈 개체 일뿐입니다. 배열은 또한 다음과 같은 방법으로 목적, slice
추천 및 특성 length
.
답변
지도의 전체 복사본을 만들어야하는 경우 다음을 사용할 수 있습니다.
new Map(JSON.parse(JSON.stringify(Array.from(source))));
source
원래 Map 객체는 어디에 있습니까 ?
이는 Map 값이 직렬화되지 않는 모든 사용 사례에 적합하지 않을 수 있습니다. 자세한 내용은 https://stackoverflow.com/a/122704/10583071을 참조하십시오.