문자열
자바스크립트 문자열은 실제로 생김새만 비슷하지, 문자 배열과 같지 않다.
var a = "abc";
var b = ["a","b","c"];
//배열과 마찬가지로 문자열도 length, indexOf(),concat() 메서드를 사용할 수 있다.
console.log(a.length); //3
console.log(b.length); //3
console.log(a.indexOf("b")); //1
console.log(b.indexOf("b")); //1
var c = a.concat("eng"); // "abceng"
var d = b.concat("eng"); // ["a","b","c","e","n","g"]
위의 예시만 봤을때는 문자의 배열이라고 이해할수 있으나, 문자열은 불변 값, 배열은 가변 값 이다.
문자열 메서드는 새로운 문자열을 생성한 후 반환한다. 반면 배열 메서드는 그 자리에서 원소를 변경한다.
그러므로 문자열에 대부분의 배열 메서드는 사용할 수 없으나, 문자열에 대한 불변 배열 메서드를 빌려쓰기는 가능하다.
var a = "test";
console.log(a.join); //undefined
console.log(a.map); //undefined
//불변 배열 메서드
var c = Array.prototype.join.call( a, "_");
var d = Array.prototype.map.call(a, function(v){
return v.toUpperCase()+".";
}).join( "" );
console.log(c);//"t_e_s_t"
console.log(d);//"T.E.S.T."
//문자열 거꾸로 뒤집기, 가변 배열 메서드라 사용 불가
console.log(Array.prototype.reverse.call(a)); //TypeError
reverse같은 경우에는 call을 통해서도 사용이 불가능 한데, 아래와 같은 꼼수로는 해결이 가능하다.
단, 복잡한 문자(유니코드,특수문자 등등) 이 섞여있다면 라이브러리 유틸이 필요하다. ex:에스레베르)
//1) 'a'를 문자의 배열로 분할
//2) 문자 배열의 순서를 reverse처리
//3) 문자배열을 합쳐 다시 문자열로 돌린다.
var e = a.split("").reverse().join("");
console.log(e); // "tset"
정리
문자열에서는 왠만한 함수는 Array.prototype.call()을 통해 배열 메서드가 사용 가능하다.
다만 가변 배열 메서드인 reverse()의 경우에는 사용 불가하다.
배열을 문자열로 표현할때는 join("") 메서드를 활용하자.
'Language > JavaScript' 카테고리의 다른 글
[JavaScript]배열 메소드 forEach(), map(),filter(),find(),reduce() (0) | 2020.08.18 |
---|---|
[JavaScript]값 - 1.1 배열 (0) | 2020.07.22 |
[JavaScript] type,typeof (0) | 2020.07.13 |
정규식을 사용한 패스워드 입력 제한 구현 (0) | 2020.02.18 |
Nexa17 + jsp + 첨부파일 upload 구현 (0) | 2020.02.02 |