JavaScript(8)

1. 문자열 객체 메소드

문자열 추출

charAt(인덱스 번호)

let str = "Gone with The wind"
document.write(str.charAt(0)) // G -> '0'인덱스의 문자 추출

하위 문자열(시작 인덱스 번호, 종료 인덱스 번호+1)

let str = "Gone with The wind"
document.write(str.substring(10, 13)) // 10~12인덱스의 문자 추출

슬라이스(시작 인덱스 번호, 마지막 인덱스 번호+1)

let str = "Gone with The wind"
document.write(str.slice(10, 13)) // 10~12인덱스의 문자 추출

문자열 교체

toLocaleLowerCase()

let str = "Gone with The wind"
document.write(str.toLocaleLowerCase()) // 전부 소문자 치환

대문자로()

let str = "Gone with The wind"
document.write(str.toUpperCase()) // 전부 대문자 치환

replace(바꿀 문자, 바꿀 문자)

바꿀 문자열을 “”(빈 문자열)로 지정하면 문자를 제거하는 데 사용할 수 있습니다.

특정 문자열만 바꾸기

let str = "Gone with The wind"
document.write(str.replace('n', 'N')) // "GoNe with The wind" -> 처음만나는 문자 하나만 치환됨

특정 문자열 바꾸기

string.replace(/특정 문자열/g, “”)

→ 문자열의 모든 특정 문자열이 교체됩니다.

→ ‘g’는 전역 검색을 의미하는 플래그

지정된 문자열에서 대소문자를 구분하지 않고 대체하여 모두 대체

string.replace(/특정 문자열/i, “”)

→ ‘i’는 ‘대소문자 무시’를 의미하는 플래그입니다.

string.replace(/특정 문자열/ig, “”)

→ 대소문자에 관계없이 특정 문자열 교체

문자열 연결

연결할 문자열1.concat(연결할 문자열2)

let text1 = "Hello"
let text2 = "World"
let text3 = text1.concat(text2)
document.write(text3) // HelloWorld

특정 문자로 문자열의 앞면과 뒷면 채우기

string.padStart(기존 문자 앞의 패딩 수, 채울 문자)

let text5="9"
    document.write(text5.padStart(4,"*")) // ***9

string.padEnd (기존 문자, 패딩할 문자를 포함하여 뒷면에 패딩할 문자 수)

let text6="9"
    document.write(text5.padEnd(4,"*")) //9***

2. 웹스토리지 사용방법

(참조) https://www.daleseo.com/js-web-storage/

세션 저장

  • 저장된 데이터는 웹 사이트에서 세션이 끝나면 삭제됩니다.

  • 동일한 웹사이트를 브라우저의 여러 탭이나 창에서 열 때 데이터는 다중 세션 저장소에 서로 별도로 저장 → 각 탭이나 창을 닫을 때 저장된 데이터도 함께 파기됩니다.

로컬 저장소

  • 웹사이트 세션이 종료된 후에도 데이터는 삭제되지 않습니다.

  • 여러 탭 또는 창 간에 데이터 공유 → 탭 또는 창을 닫아도 데이터가 브라우저에 유지됨
  • 동일한 컴퓨터에서 동일한 브라우저를 지속적으로 사용하는 경우에만 로컬 스토리지의 데이터 지속성

→ 따라서 서로 다른 디바이스나 브라우저 간에 데이터를 공유하고 저장해야 하는 경우 클라우드 플랫폼이나 데이터베이스 서버를 사용해야 합니다.

기본 API

  • localStorage는 window 객체이므로 window 키워드를 생략할 수 있습니다.

  • 웹 스토리지는 기본적으로 키와 값으로 구성된 데이터를 저장할 수 있습니다.

  • 문자 유형(문자열) 데이터 유형만 지원됩니다.

    → 값을 객체로 저장하면 (객체 객체)라는 텍스트 값으로 표현되므로 내부 값을 알 수 없다.

// 키에 데이터 쓰기
localStorage.setItem("key", value);

// 키로 부터 데이터 읽기
localStorage.getItem("key");

// 키의 데이터 삭제
localStorage.removeItem("key");

// 모든 키의 데이터 삭제
localStorage.clear();

// 저장된 키/값 쌍의 개수
localStorage.length;
> localStorage.setItem('obj', {a: 1, b: 2})
undefined
> localStorage.getItem('obj')
"(object Object)" // 객체로 저장되어있어서 텍스트 값으로 (object Object)로 출력됨

각 개체에는 개체가 텍스트 값으로 표시되거나 개체가 문자열 값으로 참조할 때 사용되는 toString()이라는 메서드가 있습니다.

(참조) https://medium.com/today-programming/what-object-object-in-javascript-fe55b754e709

→ 웹 저장소 사용 시 위와 같은 문제를 피하기 위해 JSON 형식으로 데이터를 읽고 씁니다.

> localStorage.setItem('json', JSON.stringify({a: 1, b: 2}))
undefined
> JSON.parse(localStorage.getItem('json'))
{a: 1, b: 2}

3.JSON

XML과 JSON 비교

XML 문법

  • 여는 태그와 닫는 태그로 구성되어 있습니다.

  • 커스텀 태그 기반(태그 커스터마이징 및 사용 가능)
  • 환경 설정 파일 생성, 안드로이드 기반 앱 개발 시 뷰포트 구성

예)

     <driver>OracleDriver</driver>

     <username>system</username>

     <password>1234</password>

   </database>

JSON(JavaScript 객체 표기법)

  • 문자 단위 통신(비동기 방식)에서 XML을 대체하는 형식입니다.

  • AJAX, NoSQL DB 등에서 주로 사용하는 형식(표기법)
  • 배열 객체
  • 예) 페이지에서 더보기 -> 댓글 더보기 클릭 시 URL: 문자 단위(json)가 변경되지 않음

JSON 기본 구조

  • 데이터는 {“key” : “value”} 쌍으로 구성됩니다.

  • 속성(이름, 키, 속성), 값(값, 데이터)
  • 이름을 만들 때 “” 문자는 생략할 수 있습니다.

  • {}에 데이터 저장
  • 형식) {이름:값, “이름”:값, ‘이름’:값, ~~~}
  • 예) {드라이버:”OracleDriver”, “사용자 이름”:”시스템”, 비밀번호:’1234′, ~~}
  • 로컬 저장소에 쓸 데이터를 JSON 형식으로 직렬화하고 읽은 데이터를 JSON 형식으로 역직렬화하여 원래 데이터를 변경하지 않고 유지할 수 있습니다.

> localStorage.setItem('nums', JSON.stringify((1, 2, 3)))
undefined
> JSON.parse(localStorage.getItem('nums'))
(1, 2, 3)

직렬화(직렬화0

다른 스토리지 환경 등에서 사용할 수 있는 형태로 변환

직렬화 대상 → 프로그램에서 사용되는 개체 또는 데이터 구조

바이트로 변환

stringify 메서드를 사용하여 개체를 문자열 형식으로 변환할 수 있습니다.

var stringHello = JSON.stringify(hello);
console.log(stringHello); //{"a":"hello"}

역직렬화

자바스크립트 객체 형태로 생성 → 직렬화된 파일 역직렬화

parse 메서드를 사용하여 객체를 문자열 유형에서 객체 유형으로 캐스팅할 수 있습니다.

var deserializeHello= JSON.parse(stringHello);
console.log(deserializaeHello); //{a:"hello"}
console.log(typeof deserializeHello); //object