1. 깊은 복사
얕은 복사는 원본 배열의 참조만 복사하므로 원본 배열 변경시 복사된 배열도 변경된다.
깊은 복사는 새로운 배열에 복사하기 위해 사용
https://developer.mozilla.org/ko/docs/Glossary/Deep_copy
깊은 복사 - MDN Web Docs 용어 사전: 웹 용어 정의 | MDN
객체의 깊은 복사는 복사본의 속성이 복사본이 만들어진 원본 객체와 같은 참조(메모리 내의 같은 값을 가리킴)를 공유하지 않는 복사입니다. 따라서 원본이나 복사본을 변경할 때, 다른 객체가
developer.mozilla.org
// 얕은 복사
let arr = [1,2,3]
let arrCopy = arr
// Spread 연산자
const originalArray = [1, 2, 3];
const deepCopiedArray = [...originalArray];
// .slice()
const originalArray = [1, 2, 3];
const deepCopiedArray = originalArray.slice();
// .map()
const originalArray = [1, 2, 3];
const deepCopiedArray = originalArray.map(element => element);
2. .splice()
배열의 특정 요소를 변경할 때
const months = ['Jan', 'March', 'April', 'June'];
months.splice(1, 0, 'Feb');
// Inserts at index 1
console.log(months);
// Expected output: Array ["Jan", "Feb", "March", "April", "June"]
months.splice(4, 1, 'May');
// Replaces 1 element at index 4
console.log(months);
// Expected output: Array ["Jan", "Feb", "March", "April", "May"]
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Array/splice
Array.prototype.splice() - JavaScript | MDN
splice() 메서드는 배열의 기존 요소를 삭제 또는 교체하거나 새 요소를 추가하여 배열의 내용을 변경합니다.
developer.mozilla.org
3. break
while, for, do-while문에서 조건에 만족했을 때 반복문 루프를을 종료할때
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/break
break - JavaScript | MDN
break 문은 현재 반복문, switch (en-US) 문, 또는 label 문을 종료하고, 그 다음 문으로 프로그램 제어를 넘깁니다.
developer.mozilla.org
for (let i = 0; i < 10; i++) {
if (i === 5) {
break; // i가 5일 때 루프를 중단합니다.
}
console.log(i);
}
4. for...of
배열, 객체의 각 요소에 대해 반복할 때
https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Statements/for...of
for...of - JavaScript | MDN
for...of 명령문은 반복가능한 객체 (Array, Map, Set (en-US), String, TypedArray, arguments 객체 등을 포함)에 대해서 반복하고 각 개별 속성값에 대해 실행되는 문이 있는 사용자 정의 반복 후크를 호출하는
developer.mozilla.org
const arr = [1, 2, 3, 4, 5];
arr.forEach((element) => {
console.log(element);
});
1
2
3
4
5
const arr = [1, 2, 3, 4, 5];
for (let element of arr) {
console.log(element);
}
1
2
3
4
5
// forEach와 달리 문자열, map, set 등에 모두 사용 가능하다.
const map = new Map();
map.set('name', 'John');
map.set('age', 30);
for (let [key, value] of map) {
console.log(`${key}: ${value}`);
}
name: John
age: 30
const str = 'hello';
for (let char of str) {
console.log(char);
}
h
e
l
l
o
5. 대/소문자 판별 (ASKII)
대/소문자 판별시 아스키 코드를 사용할 수 있다.
소문자 : 97 ~ 122
대문자 : 65 ~ 90
function countUpperCaseLowerCase(str) {
let upperCaseCount = 0;
let lowerCaseCount = 0;
for (let i = 0; i < str.length; i++) {
const charCode = str.charCodeAt(i);
if (charCode >= 65 && charCode <= 90) {
upperCaseCount++;
} else if (charCode >= 97 && charCode <= 122) {
lowerCaseCount++;
}
}
return { upperCaseCount, lowerCaseCount };
}
const inputString = "Hello World";
const counts = countUpperCaseLowerCase(inputString);
console.log("Number of uppercase letters:", counts.upperCaseCount);
console.log("Number of lowercase letters:", counts.lowerCaseCount);
Number of uppercase letters: 2
Number of lowercase letters: 8