배열 참조... 그리고 하지 않는 방법!
5282 단어 referencetricksarrayjavascript
가끔은 끈적끈적...
이 코드를 보세요... breeds 배열에 무슨 일이 일어날 것 같나요?
let breeds = ["Labrador","Akita","Siamese"]
// Let's make an array of only Dogs Breed... splice out Siamese.
let doggy = breeds;
doggy.splice(2)
console.log(doggy)
// -> ["Labrador", "Akita"]
console.log(breeds)
// -> ["Labrador", "Akita"]
그래서... 우리는 품종 배열이 아닌 강아지 배열을 변경하고 싶었습니다.
우리는 JavaScipt에 다음과 같이 말했습니다.
let breeds = ["Labrador","Akita","Siamese"]
// Let's make an array of only Dogs Breed... splice out Siamese.
let doggy = breeds;
doggy.splice(2)
console.log(doggy)
// -> ["Labrador", "Akita"]
console.log(breeds)
// -> ["Labrador", "Akita"]
let doggy = breeds;
그러나 "="가 있는 Javascript는 REFERENCE를 생성했습니다.
우리의 선언으로 doggy와 breeds는 참조로 "동일한 객체"를 가리키고 있습니다... 동일한 메모리, 그리고 하나를 변경하면 둘 다 변경됩니다!
사악한 쌍둥이
목록을 만들어 봅시다... 참조를 만들지 않는 방법
배열의 값만 다른 배열로 전달하고 동시에 "새 객체"를 생성하려는 경우.
이 유용한 방법을 사용할 수 있습니다.
//1. Create a copy with slice.
let doggy = breeds.slice();
//2. Create a concatenation with an empty array.
let doggy = [].concat(breeds);
//3. Spread an array into another one.
let doggy = [...breeds];
//4. Use the Array.from() method, to create an array, with the same value of //another one
let doggy = Array.from(breeds);
여기 있는 모든 방법은 품종에 대한 참조 없이 완전히 새로운 강아지 배열을 생성합니다.
이제 부수적인 효과 없이 샴을 벗을 수 있습니다.
let breeds = ["Labrador","Akita","Siamese"]
let doggy = breeds.slice();
doggy.splice(2)
console.log(doggy)
// -> ["Labrador", "Akita"]
console.log(breeds)
// -> ["Labrador", "Akita", "Siamese"]
이제 그들은 서로 다른 배열에 있지만... 여전히 서로를 사랑할 수 있습니다!
Reference
이 문제에 관하여(배열 참조... 그리고 하지 않는 방법!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다
https://dev.to/genta/array-reference-and-how-to-not-54ng
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념
(Collection and Share based on the CC Protocol.)
//1. Create a copy with slice.
let doggy = breeds.slice();
//2. Create a concatenation with an empty array.
let doggy = [].concat(breeds);
//3. Spread an array into another one.
let doggy = [...breeds];
//4. Use the Array.from() method, to create an array, with the same value of //another one
let doggy = Array.from(breeds);
let breeds = ["Labrador","Akita","Siamese"]
let doggy = breeds.slice();
doggy.splice(2)
console.log(doggy)
// -> ["Labrador", "Akita"]
console.log(breeds)
// -> ["Labrador", "Akita", "Siamese"]
Reference
이 문제에 관하여(배열 참조... 그리고 하지 않는 방법!), 우리는 이곳에서 더 많은 자료를 발견하고 링크를 클릭하여 보았다 https://dev.to/genta/array-reference-and-how-to-not-54ng텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
우수한 개발자 콘텐츠 발견에 전념 (Collection and Share based on the CC Protocol.)