Bibi's DevLog ๐ค๐
[์ธํ๋ฐ] Javascript์ ๋ฌธ - ๋ฐฐ์ด๊ณผ ๋ฌธ์์ด 2 - .concat(), .join(), .split(), .indexOf(), .lastIndexOf(), .slice(), .splice() ๋ณธ๋ฌธ
[์ธํ๋ฐ] Javascript์ ๋ฌธ - ๋ฐฐ์ด๊ณผ ๋ฌธ์์ด 2 - .concat(), .join(), .split(), .indexOf(), .lastIndexOf(), .slice(), .splice()
๋น๋น bibi 2020. 10. 19. 18:39* ์ด ๊ธ์ ์ธํ๋ฐ์์ ์ ๊ณตํ๋ ํธ๋ ์ค๋์ ์ ๋ฃ ๊ฐ์ '์ฝ๊ณ ์์ฐ์ค๋ฝ๊ฒ ๋ฐฐ์๋ณด๋ Javascript ์ ๋ฌธ - ์ฝ๋์ค์ฟผ๋ ๋ง์คํฐ์ฆ ์ฝ์ค ๋ ๋ฒจ1'๋ฅผ ๋ฃ๊ณ ๊ณต๋ถํ๋ฉฐ ์ ๋ฆฌํ ๊ธ์ ๋๋ค. ๊ฐ์ ๋ด์ฉ์ ๋ํด, ์ ๊ฐ ํ๊ธฐํ๊ณ ๊ตฌ๊ธ๋งํ ๋ด์ฉ์ด ์ ๋ฆฌ๋์ด ์์ต๋๋ค. ์ด๋ณด์ธ ์ ๊ฐ ์ดํดํ ๋๋ก ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์, ๋ถ์ ํํ ๋ด์ฉ์ด ์์ ์ ์์์ ๊ฐ์ํด ์ฃผ์๊ธธ ๋ฐ๋๋๋ค. ๊ฐ์๋ฅผ ๋ฃ๊ณ ๋ด์ฉ์ ์ ๋ฆฌํ ๊ธ์ด๊ธฐ ๋๋ฌธ์ ๋ฌธ์ ๊ฐ ๋์ง ์๋๋ค๋ ์ธํ๋ฐ ์ธก ๋ต๋ณ์ ๋ฐ์ ์ ์ด ์์ผ๋(https://bibi6666667.tistory.com/37), ์ ์๊ถ์ ๋ฌธ์ ๊ฐ ๋๋ค๋ฉด ๋ณดํธ ๋ชจ๋(๋น๊ณต๊ฐ)๋ก ์ ํํ๊ฒ ์ต๋๋ค.
๋ฐฐ์ด๊ณผ ๋ฌธ์์ด์ ๋ฉ์๋ ์ดํด๋ณด๊ธฐ
๋ณต์ต
- Array (๋ฐฐ์ด, ์ด๋ ์ด) - ์ฌ๋ฌ ๋ฐ์ดํฐ๋ฅผ ๋ด์ ์ ์๋ ์๋ฃ๊ตฌ์กฐ์ ๋๋ค. []
- ์๋ฐ์คํฌ๋ฆฝํธ์์ ๋ฐฐ์ด์ ๊ฐ์ฒด์ด๋ฏ๋ก ์์ฑ๊ณผ ๋ฉ์๋๋ฅผ ๊ฐ์ง๋๋ค.
- ๋ฐฐ์ด๊ณผ ๋ฌธ์์ด์ ์ ์ฌํฉ๋๋ค.
- ์ฐจ์ด์ ) ๋ฐฐ์ด์ mutable(๋ณํ๊ธฐ ์ฌ์ด), ๋ฌธ์์ด์ immutable(๋ถ๋ณ์) ํน์ง์ด ์์ต๋๋ค.
- ์์ฑ: length(๋ฐฐ์ด์ ๊ธธ์ด)
- ๋ฉ์๋: push()๋งจ ๋ค์ ๋ฃ๊ธฐ, pop()๋งจ ๋ค์์ ๋นผ๊ธฐ, unshift()๋งจ ์์ ๋ฃ๊ธฐ, shift()๋งจ ์์์ ๋บด๊ธฐ
๋ฐฐ์ด์ ๋ฉ์๋ ๋ ์ดํด๋ณด๊ธฐ
.concat() ์ปจ์บฃ
.concat();
๋ฐฐ์ด์ด๋ฆ.concat(ํฉ์น ๋ฐฐ์ด ์ด๋ฆ);
๋ฐฐ์ด ํฉ์น๊ธฐ. (์ซ์, ๋ฌธ์์ด๋ผ๋ฆฌ๋ ๊ฐ๋ฅ)
concatenate(์ฌ์ฌ๊ฐ์ด ์๋ค) ์ ์ฝ์์ด๋ค.
A.concat(B) ๋ฅผ ํตํด A์ B๋ฅผ ์ด์ ์ ๋ฐฐ์ด์ ๋ง๋ค์ด ์ค๋ค.
์๊ดํธ ์์๋ ์ซ์/๋ฌธ์์ด/๋ฐฐ์ด์ด ๋ค์ด๊ฐ ์ ์๋ค.
(๊ธฐ์กด ๋ฐฐ์ด์ ๋ด์ฉ์ ๋ณํ์ง ์์ผ๋ฏ๋ก, ์๋ก์ด ๋ณ์์ ๋ด์์ ์จ์ผ ํ๋ค)
var a = [1, 2, 3, 4, 5];
a.concat(6); // [1, 2, 3, 4, 5, 6]
a; // [1, 2, 3, 4, 5] ๊ธฐ์กด ๋ฐฐ์ด์ ๋ด์ฉ์ ๋ฐ๊พธ๋ ๊ฒ์ด ์๋.
var a2 = a.concat(6);
a2; // [1, 2, 3, 4, 5, 6] ์๋ก์ด ๋ณ์๋ฅผ ๋ง๋ค์ด ๋ด์ ์จ์ผ ํ๋ค.
var a3 = a.concat([6, 7, 8]);
a3; // [1, 2, 3, 4, 5, 6, 7, 8] ๊ดํธ ์์ ์ซ์/๋ฌธ์์ด ๋ฟ ์๋ ๋ฐฐ์ด๋ ๋ฃ์ด ์ด์ด๋ถ์ผ ์ ์๋ค.
var s = "hello";
var s2 = s.concat(" world");
s; // "hello"
s2; // "hello world"
s2 = s + " world"; //์ ๊ฐ์ ๊ฒฐ๊ณผ์ด๋ค. ("๋ฌธ์์ด"์ ๊ฒฝ์ฐ์๋ ๋ํ๊ธฐ๋ก ์ด์ด๋ถ์ธ ๊ฒ๊ณผ ๊ฒฐ๊ณผ๊ฐ ๊ฐ๋ค.)
โ "์๋ณธ์ ๋ฐ๊พธ์ง ์๋ ๋ฉ์๋"๋ค์ ๋ฐฐ์ด๊ณผ ๋ฌธ์์ด์ ๋ชจ๋ ์ ์ฉ ๊ฐ๋ฅํ๋ค.
(๋ฌธ์์ด์ immutable์์ฑ ๋๋ฌธ)
.join()
.join();
๋ฐฐ์ด์ด๋ฆ.join();
()๊ธฐ์ค, ๋ฐฐ์ด์ ๋ฌธ์์ด๋ก ๋ณํ.
๋ฐฐ์ด์ ์์๋ค์ ๋ฌธ์์ด๋ก ๋ณํํด ์ค๋ค.
๋ฐฐ์ด์ ๋ฌธ์์ด๋ก ๋ฐ๊ฟ ๋ ์ฌ์ฉํฉ๋๋ค.
-์๊ดํธ ๋ด์ ํ๋ผ๋ฏธํฐ(๋งค๊ฐ๋ณ์)๊ฐ ์์ ๋๋ ์ผํ(,) ๋ฅผ ๊ตฌ๋ถ์๋ก ํด ๋ฐฐ์ด์ ํํ ๊ทธ๋๋ก ๋ฌธ์์ด๋ก ๋ง๋ค์ด ์ค๋ค.
-์๊ดํธ ๋ด์ ํ๋ผ๋ฏธํฐ(๋งค๊ฐ๋ณ์)๊ฐ ์์ ๋๋ ๋งค๊ฐ๋ณ์๋ฅผ ๊ตฌ๋ถ์๋ก ํด ๋ฌธ์์ด์ ๋ง๋ค์ด ์ค๋ค.
๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํํ๋ .join(); ๊ณผ .join("");์ด๋ค.
///////////ํ๋ผ๋ฏธํฐ ์์ด ์ฌ์ฉํ๋ ๊ฒฝ์ฐ///////////
var a = [1, 2, 3, 4, 5];
a.join(); // "1, 2, 3, 4, 5" ๋ฐฐ์ด์ ๋ฌธ์์ด๋ก ๋ณํํด ์ค๋ค.
// ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํํ(1)
a; // [1, 2, 3, 4, 5] ๊ธฐ์กด ๋ฐฐ์ด์ ๋ณํ์ํค์ง ์๋๋ค.
var a3 = a.join();
a3; // "1, 2, 3, 4, 5" ๋ณํ๋ ๋ฌธ์์ด์ ์๋ก์ด ๋ณ์์ ๋ด์์ ์จ์ผ ํ๋ค.
typeof a3; // "string". "1, 2, 3, 4, 5"๊ฐ ํต์งธ๋ก ๋ฌธ์์ด์ด๋ค.
///////////ํ๋ผ๋ฏธํฐ๋ฅผ ๊ตฌ๋ถ์๋ก ์ฌ์ฉํ๋ ๊ฒฝ์ฐ///////////
a.join(""); // "12345" ๊ตฌ๋ถ์๋ก ๊ณต๋ฐฑ์ ์ฌ์ฉํด, ๋ฐฐ์ด์ ๋ชจ๋ ์์๊ฐ ๋ถ์ด์ ธ ๋ฌธ์์ด๋ก ๋ณํ๋๋ค.
// ๊ฐ์ฅ ๋ง์ด ์ฌ์ฉ๋๋ ํํ(2)
a.join("--"); // "1--2--3--4--5" --๋ฅผ ๊ตฌ๋ถ์๋ก ํ ๋ฌธ์์ด๋ก ๋ณํ๋๋ค.
var s3 = ["h", "e", "l", "l", "o"];
s3.join(""); // "hello"
s3.join("a"); // "haealalao" ์ด๋ฐ ์ฅ๋๋ ์น ์ ์๋ค.
.split() ์คํ๋ฆฟ
.split()
๋ฌธ์์ด.split();
()๊ธฐ์ค, ๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ๋ณํ.
์๊ดํธ()๋ฅผ ๊ธฐ์ค์ผ๋ก ๋ฌธ์์ด์ ๋๋์ด ๋ฐฐ์ด๋ก ๋ณํํ๋ ๋ฉ์๋.
๋ฌธ์์ด์ ๋ฐฐ์ด๋ก ๋ฐ๊ฟ ๋ ์ฌ์ฉํฉ๋๋ค.
-์๊ดํธ ๋ด์ ํ๋ผ๋ฏธํฐ(๋งค๊ฐ๋ณ์)๊ฐ ์์ ๋๋ ๋ฌธ์์ด์ ํต์งธ๋ก ๋ฐฐ์ด๋ก ๋ง๋ ๋ค(๊ธธ์ด1์ธ ๋ฐฐ์ด).
-์๊ดํธ ๋ด์ ํ๋ผ๋ฏธํฐ(๋งค๊ฐ๋ณ์)๊ฐ ์์ ๋๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ํด ๋ฐฐ์ด์ ์์๋ก ๋๋์ด ๋ฐฐ์ด๋ก ๋ณํํ๋ค.
var s = "hello";
s.split(); // ["hello"]
// ํ๋ผ๋ฏธํฐ ์์ด ์ฌ์ฉํ ๋๋ ๋ฌธ์์ด์ ํต์งธ๋ก ๋ฐฐ์ด์ ํ ์์๋ก ๋ง๋ ๋ค.
s.split(""); // ["h", "e", "l", "l", "o"]
// ํ๋ผ๋ฏธํฐ๊ฐ ์์ ๋๋ ํ๋ผ๋ฏธํฐ๋ฅผ ๊ธฐ์ค์ผ๋ก ์์๋ก ๋๋์ด์ ๋ฐฐ์ด๋ก ๋ณํํ๋ค.
var s4 = s.split("");
s4; // ["h", "e", "l", "l", "o"]
// ์ญ์ ์๋ณธ์ ๋ณํ์ํค์ง ์๊ธฐ ๋๋ฌธ์ ์๋ก์ด ๋ณ์์ ๋ด์์ ์ฌ์ฉํด์ผ ํ๋ค.
โ .join()๊ณผ .split(), .join("")๊ณผ .split("")์ ์๋ก ๋ฐ๋ ๊ด๊ณ๋ก, ํจ๊ป ๋ง์ด ์ฌ์ฉํ๋ค.
var a3 = "hello"
a3.split(); // ["hello"]
a3.split(""); // ["h", "e", "l", "l", "o"]
var s3 = ["h", "e", "l", "l", "o"];
s3.join(); // "h,e,l,l,o"
s3.join("") // "hello"
์ฆ
.join() <-> .split()
.join("") <-> .split("")
์ ๊ด๊ณ์ ์๋ค.
โป ๋ฌธ์์ด์ .split()
๋ฌธ์์ด.split();
๋ฌธ์์ด์ ์ชผ๊ฐ์ด ๋ฌธ์ ๋ฐฐ์ด๋ก ๋ง๋๋ ๋ฉ์๋.
์๊ดํธ()๋ด์ ํ๋ผ๋ฏธํฐ(๋งค๊ฐ๋ณ์)๋ฅผ ๊ธฐ์ค์ผ๋ก ์ชผ๊ฐ ์ค๋ค.
(๋งค๊ฐ๋ณ์๋ ํ ์๋ฆฌ ๋ฌธ์๊ฐ ์๋์ด๋ ๋๋ค - s6 ์ฐธ๊ณ )
โ ๋งค๊ฐ๋ณ์ (์๊ดํธ ๋ด ๋ฌธ์) ๋ก ์ฌ์ฉ๋ ๋ฌธ์๋ ๋ฐฐ์ด๋ก ์ ํ๋ ๋ ์ฌ๋ผ์ง๋ค!
var s = "hello, world, a-b-c";
var s1 = s.split(); // ์๋ฌด ๊ฐ ์์ด ์คํ๋ฆฟ.
s1; // ["hello, world, a-b-c"]
var s2 = s.split(""); // ๋น์ด ์๋ ๋ฌธ์ = null๋ฌธ์๋ก ์คํ๋ฆฟ.
s2; // ["h", "e", "l", "l", "o", ",", " ", "w", "o", "r", "l", "d", ",", " ", "a", "-", "b", "-", "c"]
// ๊ธ์, ๊ธฐํธ, ๊ณต๋ฐฑ ๊ฐ๊ฐ ํ๋ํ๋๊ฐ ๋ฐฐ์ด์ ์์๊ฐ ๋๋ค.
s2.length; // 19
var s3 = s.split(","); // ์ฝค๋ง๋ฅผ ๊ธฐ์ค์ผ๋ก ์คํ๋ฆฟ.
s3; // ["hello", " world", " a-b-c"]
var s4 = s.split(" "); // ๊ณต๋ฐฑ๋ฌธ์๋ฅผ ๊ธฐ์ค์ผ๋ก ์คํ๋ฆฟ.
s4; // ["hello,", "world,", "a-b-c"]
// ์์ ๋ฌ๋ฆฌ ๊ณต๋ฐฑ ๊ธฐ์ค ์คํ๋ฆฟ์ด๋ฏ๋ก, ์ฝค๋ง๋ฅผ ํฌํจํ์ฌ ๋ฐฐ์ด์ ์์๊ฐ ๋๋ค.
var s5 = s.split("-");
s5; //["hello, world, a", "b", "c"]
var s6 = s.split("ll");
s6; // ["he", "o, world, a-b-c"]
.indexOf(), .lastIndexOf()
.indexOf()
๋ฐฐ์ด์ด๋ฆ.indexOf()
(O๋ ๋๋ฌธ์!)
์๊ดํธ()์์ ๋ฐฐ์ด/๋ฌธ์์ด ์์ ์์๋ฅผ ๋ฃ์ผ๋ฉด, ๊ทธ ์์์ ์์น = ์ธ๋ฑ์ค๋ฅผ ์ฐพ์ ์ค๋ค.
(0 = 1๋ฒ์งธ. 1 = 2๋ฒ์งธ .. ์ปดํจํฐ๋ ์ธ์ ๋ 0๋ถํฐ ์ผ๋ค)
ํนํ .indexOf()๊ฐ ๋ง์ด ์ฌ์ฉ๋จ.
var a = [1, 2, 3, 4, 5];
a.indexOf(3); // 2
// ์ธ ๋ฒ์งธ ์์์ ์ธ๋ฑ์ค๋ 2.
a[2]; // 3
a.indexOf(1); // 0
// ์ฒซ ๋ฒ์งธ ์์์ ์ธ๋ฑ์ค๋ 0.
a[0]; // 1
///// ??๋ฐฐ์ด ๋ด์ ๊ฐ์ ์ด๋ฆ์ ์์๊ฐ ์ฌ๋ฌ ๊ฐ ์กด์ฌํ ๋๋??
var a2 = [1, 2, 3, 4, 5, 2, 3];
a2.indexOf(2); // 1
// ๋ฐฐ์ด์ ๋ ๋ฒ์งธ ์์์ธ 2๋ง ์ฐพ์์ง๋ค.
// ์? .indexOf๋ ๋งจ ์์ ๊ฒฐ๊ณผ ํ๋๋ง ๋จผ์ ์๋ ค์ฃผ๊ธฐ ๋๋ฌธ.
// ๋ฐ๋๋ก ๋งจ ๋ค์ ๊ฒฐ๊ณผ ํ๋๋ฅผ ๋จผ์ ์๋ ค์ฃผ๋ .lastIndexOf()๋ ์๋ค.
a2.lastIndexOf(2); // 5
// ๋ฐฐ์ด์ ์ฌ์ฏ ๋ฒ์งธ ์์์ธ 2๋ฅผ ์ฐพ์์ค๋ค.
a2.lastIndexOf(3); // 6
// ๋ฐฐ์ด์ ์ผ๊ณฑ ๋ฒ์งธ ์์์ธ 3์ ์ฐพ์์ค๋ค.
โ ๋ง์ฝ .indexOf๋ก ๋ฐฐ์ด ๋ด์ ์กด์ฌํ์ง ์๋ ์์๋ฅผ ์ฐพ์ผ๋ผ๊ณ ํ๋ฉด? Null? undefined?
๋ฐฐ์ด ๋ด์ ๊ทธ ์์๊ฐ ์๋ค๋ฉด -1 ์ด ์ถ๋ ฅ๋๋ค. + ํ์ฉ ์ฝ๋.
var a = [1, 2, 3, 4, 5];
a.indexOf(100); // -1
// ์ด๋ฌํ ๊ฒฐ๊ณผ๊ฐ์ด ์๋์ ๊ฐ์ด ์์ฉ๋๋ค.
if (a.indexOf(100) === -1) { // ๋ฐฐ์ด a ๋ด์ 100์ด๋ผ๋ ์์๊ฐ ์๋ค๋ฉด.
console.log("๋ฐฐ์ด a ์์๋ 100์ด ์๋ค")
}
.slice() ์ฌ๋ผ์ด์ค
.slice()
๋ฐฐ์ด์ด๋ฆ.slice(startIndex, endInedx);
- ๊ธฐ์กด ๋ฐฐ์ด์ ์๋ผ์, ์๋ก์ด ๋ฐฐ์ด์ ๋ง๋ญ๋๋ค.
- ๊ธฐ์กด ๋ฐฐ์ด์ ๋ณํ์ง ์์ต๋๋ค. (๋ฌธ์์ด์๋ ์ฌ์ฉ ๊ฐ๋ฅํจ)
- startIndex ์์น๋ถํฐ endIndex ์ง์ ์ ์์น๊น์ง ์๋ฆ
๋๋ค. endIndex์ ์์๋ ํฌํจ๋์ง ์์ต๋๋ค.
a = [1, 2, 3, 4, 5, 2, 3];
a.slice(0, 3); // [1, 2, 3]
// ๋ฐฐ์ด a์ 0๋ฒ์งธ๋ถํฐ 3๋ฒ์งธ์ง์ = 2๋ฒ์งธ๊น์ง ์๋ผ๋ด์ด ์๋ก์ด ๋ฐฐ์ด๋ก ๋ง๋ ๋ค.
a; // [1, 2, 3, 4, 5, 2, 3];
// .slice() ์ญ์ ์๋ณธ์ ๋ฐ๊พธ์ง ์๋ ๋ฉ์๋์ด๋ค. ๋ฐ๋ผ์ string์๋ ์ ์ฉ ๊ฐ๋ฅํ๋ค.
// 3, 4, 5๋ง ์๋ผ๋ด์ด ์ ๋ฐฐ์ด๋ก ๋ง๋ค๊ณ ์ถ๋ค๋ฉด
var a2 = a.slice(2,5);
a2; // [3, 4, 5]
a; // [1, 2, 3, 4, 5, 2, 3];
-๋ฌธ์์ด์ .slice๋ฅผ ์ฌ์ฉํ ๊ฒฝ์ฐ ์๋ผ๋ธ ๋ถ๋ถ์ ์๋ก์ด ๋ฌธ์์ด๋ก ๋ง๋ฆ.
๋ง์ฐฌ๊ฐ์ง๋ก ๊ธฐ์กด ๋ฌธ์์ด์ ๋ณํ์ง ์์.
// ๋ฌธ์์ด์ .slice ์ฌ์ฉํ๊ธฐ
var s = "hello"
var s2 = s.slice(2, 4);
s2; // "ll"
s; // "hello"
.splice() ์คํ๋ผ์ด์ค
.splice()
๋ฐฐ์ด์ด๋ฆ.splice(startIndex, numElement);
- ๋ฐฐ์ด์ startIndex๋ถํฐ, numElement ๊ฐ์๋งํผ ์๋ผ๋ ๋๋ค.
- โ ๊ธฐ์กด ๋ฐฐ์ด์ ๋ณํ์ํด. ์๋ผ๋ธ ์์๋ค์ ์๋ณธ ๋ฐฐ์ด์์ ์ฌ๋ผ์ง๋๋ค. (.slice์์ ์ฐจ์ด์ )
๋ฐ๋ผ์ ๋ฐ๋์ ์๋ก์ด ๋ณ์๋ฅผ ํ์ฉํด ์๋ผ๋ด๋ ๊ฒ์ด ์ข๋ค. - ๊ธฐ์กด ๋ฐฐ์ด์ ๋ณํ์ํค๋ฏ๋ก ๋ฌธ์์ดstring์๋ .splice()๋ฅผ ์ฌ์ฉํ ์ ์๋ค.
- slice()์ splice()๋ ๋ ๋ค ์ ์ฉํ๋ฏ๋ก ๊ฐ๊ฐ์ ์ฌ์ฉ๋ฒ์ ์ ๊ธฐ์ตํด ๋๋ ๊ฒ ์ข์ต๋๋ค.