πŸ’» Programming/JS, TS

[JavaScript] slice vs splice vs split 차이점

Jiwon() 2023. 8. 8. 10:27

s..pl..i..t..ce?

맨날 μ“°λ©΄μ„œλ„ 이름이 λΉ„μŠ·ν•΄μ„œ κ·ΈλŸ°κ°€ μ € μ„Έ λ©”μ„œλ“œκ°€ 정리가 μ•ˆλ˜κ³  ν—·κ°ˆλ €μ„œ 이 참에 ν•œλ²ˆ μ‹œμ›ν•˜κ²Œ μ •λ¦¬ν•΄λ³΄μž~!


1. slice

Array.prototype.slice() λ˜λŠ” String.prototype.slice()

`slice()` λ©”μ„œλ“œλŠ” λ¬Έμžμ—΄ λ˜λŠ” λ°°μ—΄μ—μ„œ νŠΉμ • λ²”μœ„μ˜ μš”μ†Œλ“€μ„ λ³΅μ‚¬ν•˜μ—¬ μƒˆλ‘œμš΄ λ¬Έμžμ—΄ λ˜λŠ” 배열을 λ°˜ν™˜ν•œλ‹€.

  • Array
// 예제 좜처: MDN web docs - Array.prototype.slice()

const animals = ['ant', 'bison', 'camel', 'duck', 'elephant'];

console.log(animals.slice(2));
// Expected output: Array ["camel", "duck", "elephant"]

console.log(animals.slice(2, 4));
// Expected output: Array ["camel", "duck"]

console.log(animals.slice(1, 5));
// Expected output: Array ["bison", "camel", "duck", "elephant"]

console.log(animals.slice(-2));
// Expected output: Array ["duck", "elephant"]

console.log(animals.slice(2, -1));
// Expected output: Array ["camel", "duck"]

console.log(animals.slice());
// Expected output: Array ["ant", "bison", "camel", "duck", "elephant"]

 

  • String
// 예제 좜처: MDN web docs - String.prototype.slice()

const str = 'The quick brown fox jumps over the lazy dog.';

console.log(str.slice(31));
// Expected output: "the lazy dog."

console.log(str.slice(4, 19));
// Expected output: "quick brown fox"

console.log(str.slice(-4));
// Expected output: "dog."

console.log(str.slice(-9, -5));
// Expected output: "lazy"

 

 


2. splice

Array.prototype.splice() 

`splice()` λ©”μ„œλ“œλŠ” λ°°μ—΄μ—μ„œ νŠΉμ • λ²”μœ„μ˜ μš”μ†Œλ“€μ„ μ œκ±°ν•˜κ±°λ‚˜ κ΅μ²΄ν•˜λ©°, ν•„μš”ν•œ 경우 μƒˆ μš”μ†Œλ₯Ό μΆ”κ°€ν•  수 μžˆλ‹€.

// 예제 좜처: MDN web docs - Array.prototype.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"]

 

 


3. split

String.prototype.split()

`split()` λ©”μ„œλ“œλŠ” λ¬Έμžμ—΄μ„ νŠΉμ • κ΅¬λΆ„μžλ₯Ό κΈ°μ€€μœΌλ‘œ λΆ„ν• ν•˜μ—¬ λ°°μ—΄λ‘œ λ°˜ν™˜ν•œλ‹€.

// 예제 좜처: MDN web docs - String.prototype.split()

const str = 'The quick brown fox jumps over the lazy dog.';

const words = str.split(' ');
console.log(words[3]);
// Expected output: "fox"

const chars = str.split('');
console.log(chars[8]);
// Expected output: "k"

const strCopy = str.split();
console.log(strCopy);
// Expected output: Array ["The quick brown fox jumps over the lazy dog."]

 

 


4. κ·Έλž˜μ„œ 차이점이 뭔데?

  • slice()λŠ” λ¬Έμžμ—΄κ³Ό λ°°μ—΄ λͺ¨λ‘μ—μ„œ μ‚¬μš©ν•  수 μžˆλ‹€. μš”μ†Œλ₯Ό λ³΅μ‚¬ν•˜μ—¬ λ°˜ν™˜ν•˜λ©°, 원본은 λ³€κ²½λ˜μ§€ μ•ŠλŠ”λ‹€.
  • splice()λŠ” λ°°μ—΄μ—μ„œ μš”μ†Œλ₯Ό μ œκ±°ν•˜κ±°λ‚˜ κ΅μ²΄ν•˜λ©°, 원본 배열이 λ³€κ²½λœλ‹€.
  • split()은 λ¬Έμžμ—΄μ—μ„œ μ‚¬μš©ν•˜λ©°, κ΅¬λΆ„μžλ₯Ό κΈ°μ€€μœΌλ‘œ λΆ„ν• ν•˜μ—¬ μƒˆλ‘œμš΄ λ°°μ—΄λ‘œ λ°˜ν™˜ν•œλ‹€.
  • μ„Έ λ©”μ„œλ“œλŠ” λͺ¨λ‘ 원본 데이터에 영ν–₯을 λ―ΈμΉ˜λŠ” 방식과 λ°˜ν™˜ν•˜λŠ” κ°’μ˜ ν˜•νƒœμ—μ„œ 차이가 μžˆλ‹€.
    • slice()와 split()은 λ°˜ν™˜λœ 값이 μƒˆλ‘œμš΄ λ°μ΄ν„°λ‘œ κΈ°μ‘΄ 데이터에 영ν–₯을 주지 μ•Šμ•„ 닀루기 μ‰½λ‹€λŠ” μž₯점이 μžˆλ‹€.
    • 반면, splice()λŠ” 원본 배열을 직접 μˆ˜μ •ν•˜κΈ° λ•Œλ¬Έμ— μ£Όμ˜ν•΄μ„œ μ‚¬μš©ν•΄μ•Ό ν•œλ‹€.

 

κ΅¬κΈ€λ§ν•˜λ‹€κ°€ λ‹¨λ²ˆμ— 이해가 κ°€λŠ” 그림이 μžˆμ–΄μ„œ ν•¨κ»˜ 첨뢀!

좜처 https://medium.com/@jeanpan/javascript-splice-slice-split-745b1c1c05d2