잡다한 배똥월드

728x90

📝 기본 코드

 var data = {
        employees: [
          { firstName: "John", lastName: "Doe" },
          { firstName: "Anna", lastName: "Smith" },
          { firstName: "Peter", lastName: "Jones" },
        ],
      };

      var stringValue = JSON.stringify(data); //객체를 문자열로 전환

      var text =
        '{ "employees" : [' +
        '{ "firstName":"John" , "lastName":"Doe" },' +
        '{ "firstName":"Anna" , "lastName":"Smith" },' +
        '{ "firstName":"Peter" , "lastName":"Jones" } ]}';

      var obj = JSON.parse(text); //문자열 형태의 JSON을 Object 객체로 변환
  • JSON.stringify : 데이터를 서버로 전송하기 위해서는 데이터 형태를 문자열 형태로 변환해야 한다. JSON.stringify는 Object 데이터를 문자열로 변환해준다.
  • JSON.parse : 서버로부터 응답받은 데이터는 문자열 형태이다. JSON.parse 함수를 사용하면 자바스크립트 Object 객체로 변환해준다.

📝 변형 및 실행 결과

📌 1번

console.log(stringValue);

 

{ "employees":
     [
          {"firstName" : "John", "lastName" : "Doe"},
          {"firstName" : "Anna", "lastName" : "Smith"},
          {"firstName" : "Peter", "lastName" : "Jones"}
     ]
}


📌 2번

console.log(stringValue["employees"]);

 

undefined


📌 3번

console.log(data.employees[0]);

{
     "firstName": "John",
     "lastName": "Doe"
}


📌 4번

let obj = JSON.parse(stringValue);
console.log(obj["employees"]);

[
     {
          "firstName": "John",
          "lastName": "Doe"
     },
     {
          "firstName": "Anna",
          "lastName": "Smith"
     },
     {
          "firstName": "Peter",
          "lastName": "Jones"
     }
]

  • data의 결과값과 동일한 결과를 출력함
728x90
728x90

✔ Map 생성자

new Map() 생성자를 사용


✔ set(키, 값)

데이터를 저장할 때 파라미터로 키와 값을 이용


✔ get(키)

저장된 데이터를 읽을 때 파라미터로 얻고자 하는 값의 키를 전달


✔ has(키)

특정 키의 값이 저장되어 있는지 확인


✔ delete(키)

저장되어 있는 특정 데이터를 삭제


✔ clear()

저장되어 있는 모든 데이터를 한 번에 삭제


✔ forEach()

저장되는 모든 데이터를 읽을 때 사용


 
728x90
728x90

✔ toString()

배열 안의 모든 문자를 쉼표(,)를 이용해 모두 결합해서 하나의 문자열로 반환


✔ join()

배열 안의 모든 문자를 파라미터로 지정한 문자를 이용해서 모두 결합해서 하나의 문자열로 반환


✔ pop()

배열에서 마지막 데이터를 제거하고, 마지막 데이터를 반환


✔ push()

배열에 새로운 요소를 추가


✔ shift()

배열에서 첫 번째 요소를 제거하고, 첫 번째 요소를 반환


✔ unshift()

배열의 맨 앞에 요소를 추가하고, 배열의 길이를 반환


✔ splice()

새로운 요소를 특정 위치에 추가

 

첫 번째 파라미터 : 새로운 요소를 추가할 인덱스 번호

두 번째 파라미터 : 첫 번째 파라미터에 해당하는 인덱스에서 요소를 추가하기 전 삭제할 요소 수

나머지 파라미터 : 추가할 요소


✔ concat()

2개 이상의 배열을 하나의 배열로 결합


✔ slice()

시작 인덱스 번호부터 종료 인덱스 번호 이전까지의 배열 요소를 잘라내서 배열 형태로 반환

 

첫 번째 파라미터 : 시작 인덱스 번호

두 번째 파라미터 : 종료 인덱스 번호 (생략 가능, 생략 시 마지막 배열 요소까지)


✔ sort()

배열에 문자형 데이터가 있는 경우 오름차순으로 정렬


✔ sort(function(a, b){ })

인수로 전달된 function(a, b){ }를 통해 정렬됨


✔ filter(callback(element[, index[, array]])[, thisArg])

배열에서 특정 조건을 만족하는 배열의 요소만을 찾아서 새로운 배열로 반환

 

callback() : 배열의 각 요소를 시험할 함수. true인 요소만 찾아내는 함수

element : 처리할 현재 요소

index(optional) : 처리할 현재 요소의 인덱스

array(optional) : 배열 전체


✔ map()

배열의 데이터가 Object형일 때, 배열에 담긴 Object를 새로운 형태의 Object로 변환해서 배열로 반환


✔ reduce(callback())

배열에 담긴 데이터를 하나씩 순회하며 callback 함수의 실행 값을 누적하여 결과값을 반환하는 함수

 

callback 함수 첫 번째 매개변수 : accumulator (누적 값)

callback 함수 두 번째 매개변수 : currentValue (현재 배열의 요소)

callback 함수 세 번째 매개변수 : currentIndex (인덱스 번호)

callback 함수 네 번째 매개변수 : arr (배열)

728x90
728x90

 

 

 

" document.execCommand('copy') 활용 "

 

 

 

일단 복사를 하려면 무조건 저 document.execCommand('copy')를 써야하는데, 이것은 범위를 선택한 후 사용이 가능하다.

그래서 기본 방법은 무조건 textarea를 통해서 사용해야한다.

 

 

 

 


const textarea = document.querySelector('.textarea');

textarea.select();

document.execCommand('copy');

 

 

 

 

 

그래서 처음부터 textarea를 쓰면 편하긴 한데, 그렇지 않고, div, p 등의 태그를 사용할 때가 있다.

근데 이런 태그들은 select() 함수를 쓸 수가 없어서 따로 textarea를 만들어서 해당 태그의 값을 넣은 후 진행 해야 한다.

 

 

 

 

var text = result.innerText;

const textarea = document.createElement('textarea');

textarea.value = text;

resultBox.appendChild(textarea);

textarea.select();

document.execCommand('copy');

resultBox.removeChild(textarea);

 

 

 

 

 

 

728x90
728x90

 

 

 

먼저 API 이용 신청을 해야 한다.

https://www.ncloud.com/product/applicationService/maps

 

NAVER CLOUD PLATFORM

cloud computing services for corporations, IaaS, PaaS, SaaS, with Global region and Security Technology Certification

www.ncloud.com

 

 

 

 

 

위 홈페이지로 들어가면 이용 신청하기 버튼이 있으며, 이것을 눌러서 Application 등록을 한다.

 

 

 

 

 

 

그러면 애플리케이션의 이름을 작성하고, 사용할 옵션을 선택하면 되는데,

나의 경우에는 웹에서만 사용할거고, 핀만 사용할 예정이기 때문에 Web Dynamic Map만 선택했다.

그 밑으로 내려가면 사용할 URL을 작성하라고 하는데,

나중에 도메인이 등록되면 다시 변경해야하겠지만 지금은 로컬 서버에서만 사용할 것이기 때문에

Visual Studio Code 에서 연 그 링크로 등록한다.

 

 

 

 

 

 

코드에 작성할 내용은 예제로 보여준다면 다음과 같다.

여기서 수정할 부분은 head 안의 script에서 ncpClientId=YOUR_CLIENT_ID 인데,

여기서 YOUR_CLIENT_ID 를 본인의 클라이언트 아이디로 변경해야 한다.

 

 

https://navermaps.github.io/maps.js.ncp/docs/tutorial-2-Getting-Started.html

 

NAVER Maps API v3

NAVER Maps API v3로 여러분의 지도를 만들어 보세요. 유용한 기술문서와 다양한 예제 코드를 제공합니다.

navermaps.github.io

 

<!DOCTYPE html>
<html>
<head>
    <meta charset="UTF-8">
    <meta http-equiv="X-UA-Compatible" content="IE=edge">
    <meta name="viewport" content="width=device-width, initial-scale=1.0, maximum-scale=1.0, minimum-scale=1.0, user-scalable=no">
    <title>간단한 지도 표시하기</title>
    <script type="text/javascript" src="https://openapi.map.naver.com/openapi/v3/maps.js?ncpClientId=YOUR_CLIENT_ID"></script>
</head>
<body>
<div id="map" style="width:100%;height:400px;"></div>

<script>
var mapOptions = {
    center: new naver.maps.LatLng(37.3595704, 127.105399),
    zoom: 10
};

var map = new naver.maps.Map('map', mapOptions);
</script>
</body>
</html>

 

 

 

 

 

클라이언트 아이디는 애플리케이션의 인증 정보에서 확인할 수 있다.

 

 

 

 

 

 

 

728x90
728x90

 

object의 key값 가져오기

var list = { a: a1, b: b1, c: c1 };

var keys = Object.keys(list);

이렇게 되면 key값들은 배열 형식으로 keys에 들어간다.

 

 

 

key값 정렬하기

keys.sort([compareFunction]);

이 때 compareFunction은 정렬 순서를 정의하는 함수로, 설정하지 않으면 유니코드 순으로 정렬이 된다.

 

* key값이 숫자일 경우

    - 오름차순

keys.sort(function(a, b)  {
  return a - b;
});

 

    - 내림차순

keys.sort(function(a, b)  {
  return b - a;
});

 

 

* key값이 문자열일 경우

    - 오름차순

keys.sort(function(a, b) {
  const upperCaseA = a.toUpperCase();
  const upperCaseB = b.toUpperCase();
  
  if (upperCaseA > upperCaseB) {
  	return 1;
  } else if (upperCaseA < upperCaseB) {
  	return -1;
  } else {
  	return 0;
  }
});

 

    - 내림차순

keys.sort(function(a, b) {
  const upperCaseA = a.toUpperCase();
  const upperCaseB = b.toUpperCase();
  
  if (upperCaseA > upperCaseB) {
  	return -1;
  } else if (upperCaseA < upperCaseB) {
  	return 1;
  } else {
  	return 0;
  }
});

 

 

728x90
728x90

웹 버전8 - namespaced 방식임을 설명드립니다.

 

 

 

HTML에 추가해야할 스크립트

<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-app.js"></script>
<script src="https://www.gstatic.com/firebasejs/8.10.0/firebase-firestore.js"></script>

 

node.js를 쓰는 경우 스크립트 추가 대신 npm 패키지를 써도 괜찮음

npm install firebase@8.10.0 --save

 

 

 

시작하기

const firebaseConfig = {
    apiKey: "",
    authDomain: "",
    projectId: "",
    storageBucket: "",
    messagingSenderId: "",
    appId: "",
    measurementId: ""
};

firebase.initializeApp(firebaseConfig);

const db = firebase.firestore();

 

 

 

이 때 firebaseConfig에는 뭘 넣어야 되냐면

firebase 홈페이지에서 프로젝트를 만들면 왼쪽 상단에 [프로젝트 개요] 옆에 톱니바퀴를 눌러 [프로젝트 설정]에 들어간다

 

 

 

[프로젝트 설정] - [일반] 에서 밑으로 스크롤을 내리면 내앱이 있으며 이것을 생성한다.

 

 

 

앱 닉네임 작성하고 앱 등록

 

 

 

그러면 Firebase SDK 추가라며 이렇게 막 뜨는데 그 중간에 있는 firbaseConfig를 복사한 후 스크립트에 붙여넣고

밑으로 스크롤 내려서 [콘솔로 이동]을 누른다.

 

 

 

 

이렇게만 하면 Firebase의 firestore를 쓸 수 있다.

 

 

 

728x90
728x90

 

 

position: absolute로 겹쳐져 있을 때 상단의 덮인 객체에 의해 아래의 객체를 선택할 수 없을 때,

 

pointer-events: none;

 

css에 위의 코드 한 줄 추가하면 해결 가능하다.

 

 

728x90

+ Recent posts