A ship in harbor is safe, but that is not what ships are built for.

개발일지/스파르타코딩클럽_앱개발

Day01(1-1~1-7)

플리피나리 2022. 7. 3. 16:33
반응형

필수 프로그램 설치 : VSCode&안드로이드 스튜디오, node, npm

 

1. Javascript 기초 문법-1

1) 자바스크립트란?

- 웹 사이트(웹 문서)에 움직이는 그림을 그릴 때 쓰이는 작고 가벼운 언어

- But. 자바스크립트로 앱도 제작 가능

 

2) 자바스크립트 환경

- 크롬 브라우저에서 F12(윈도우)

- console.log(변수) : 콘솔 창에 괄호 안의 값을 출력

- let, var 둘다 변수 선언 사용 가능하지만, let이 더 최신!

 

3) 변수

- 변수 대입 : ' = '의 오른쪽에 있는 값을 왼쪽에 넣는다

- let으로 변수 선언, 선언한 변수의 값은 이후 변경 가능

- 사칙연산과 문자열 더하기 가능

- const 변수 선언 : const로 선언한 변수에는 새로운 값을 재할당할 수 없다!!

 

 

.2. Javascript 기초 문법-2

1) 리스트(배열)&딕셔너리(객체)

- 리스트 : 순서를 지켜서 가지고 자료를 가지고 있는 형태

- 딕셔너리 : key와 value 값의 묶음

- 딕녀리의 값을 꺼낼 때 ' 딕셔너리명[키값] ' 과 ' 딕셔너리명.키값 ' 둘다 가능!

 

2) 자바스크립트 기본 제공 함수

- 나눗셈의 나머지를 구하는 경우 : %

- 모든 알파벳 대문자로 변경 : 변수명.toUpperCase()

- 특정 문자로 문자열을 나누는 경우 : 변수명.split('특정문자')

- 특정 문자로 합치는 경우 : 변수명.join('특정문자')

 

3) 함수

- 기본 생김새

// 만들기
function 함수이름(필요한 변수들) {
	내릴 명령들을 순차적으로 작성
}
// 사용하기
함수이름(필요한 변수들);

- 또다른 함수 선언 방식

let a = function() {
	console.log("리터럴 방식이라고 합니다.")
}

a()

 

 

3. Javascript 기초 문법-3

1) 조건문

- 특정 조건을 만족하는 경우와 그렇지 않은 경우를 분리해 명령을 처리

- AND 와 OR 조건 사용 가능

- AND는 조건을 모두 만족, OR은 최소 하나만 만족하면 조건이 TRUE

// AND 조건은 이렇게
function is_adult(age, sex){
	if(age > 20 && sex == '여'){
		alert('성인 여성')
	} else if (age > 20 && sex == '남') {
		alert('성인 남성')
	} else {
		alert('청소년이에요')
	}
}

// 참고: OR 조건은 이렇게
function is_adult(age, sex){
	if (age > 65 || age < 10) {
		alert('탑승하실 수 없습니다')
	} else if(age > 20 && sex == '여'){
		alert('성인 여성')
	} else if (age > 20 && sex == '남') {
		alert('성인 남성')
	} else {
		alert('청소년이에요')
	}
}

is_adult(25,'남')

 

2) 반복문

- 일정 조건을 만족하는 동안 특정 명령문 반복

- 주로 리스트와 함께 사용(아니면 딕셔너리)

- 기본 구조

for (1. 시작조건; 2. 반복조건; 3. 더하기) {
	4. 매번실행
}

1 -> 2체크하고 -> (괜찮으면) -> 4 -> 3
-> 2체크하고 -> (괜찮으면) -> 4 -> 3
-> 2체크하고 -> (괜찮으면) -> 4 -> 3
-> 2체크하고 -> (괜찮으면) -> 4 -> 3

와 같은 순서로 실행됩니다.
i가 증가하다가 반복조건에 맞지 않으면, 반복을 종료하고 빠져나옵니다.

 

3) 합을 구하는 함수 만들기

- 0부터 n-1까지 더하는 함수 만들기

function get_sum(n) {
    let sum = 0
    for (let i = 0; i < n; i++) {
        sum += i;         // sum을 i만큼 증가시켜라. sum = sum + i 와 동일!
    }
    return sum
}

let result = get_sum(10); // return 결과인 sum이 result에 저장
console.log(result)       // 45를 출력

 

4) 배열에서 특정 원소 갯수 구하기

- 특정 배열에서 '딸기'의 개수 구하기

let fruit_list = ['사과','감','감','배','포도','포도','딸기','포도','감','수박','딸기']

let count = 0;
for (let i = 0; i < fruit_list.length; i++) {
	let fruit = fruit_list[i];
	if (fruit == '딸기') {
		count += 1;
	}
}
console.log(count);

*나는 그냥 fruit 변수 안 만들고 fruit_list[i] == '딸기' 조건으로 세움.. 변수 생성 시 조건문이 보기 편하다는 장점있음. 그리고 자바스크립트의 문자열 비교는 '==' or '===' 이다!

 

5) 미세먼지(IDEX_MVL)의 값이 40 미만인 구 이름(MSRSTE_NM)과 값을 출력하기

- 미세먼지 지수가 40보다 작은 구 찾기

for (let i = 0; i < mise_list.length; i++) {
  let mise = mise_list[i];
  if (mise["IDEX_MVL"] < 40) {
    let gu_name = mise["MSRSTE_NM"];
    let gu_mise = mise["IDEX_MVL"];
    console.log("40보다 작은 구: " + gu_name + ", " + gu_mise);
  }
}

*마찬가지로 mise변수 대신 mise_list[i]["IDEX_MVL"] < 40 사용 가능

 

 

4. 앱개발에 자주 쓰이는 Javascript

1) 함축적인 자바스크립트

- 리액트 네이티브는 항상 최신 버전의 자바스크립트 문법 사용

 

2) 화살표 함수

- 기존 방식

let a = function() {
	console.log("function");
}
a();

- 최신 방식(function 생략 후 화살표 추가)

let a = () => {
	console.log("arrow function");
}
a();

 

3) 비구조 할당

- 딕셔너리에 있는 값을 꺼내 변수에 담을 때 할당 과정을 거치지 않으면서 딕셔너리의 키 값 그대로 변수사용 가능

//객체 생성
let blog = {
	ower: "noah",
    url: "noahlogs.tistory.com",
    getPost() {
    	console.log("ES6 문법 정리");
    }
    //딕셔너리에 함수도 포함 가능
};

//기존 할당 방식
let owner = blog.owner
let getPost = blog.getPost()

//비구조 할당 방식(blog의 키값과 변수명이 동일해야 함!)
let { ower, getPost } = blog;

//함수에서 비구조 할당 방식으로 전달된 딕셔너리 값 꺼내기
let blogFunction = ({ owner, url, getPost }) => {
	console.log(owner)
    console.log(url)
    console.log(getPost())
}

blogFunction(blog) //해당 딕셔너리에서 비구조 할당 방식 적용해 값 꺼냄

 

4) 객체 리터럴

- 딕셔너리 생성 시 필드명과 대입할 변수명이 같은 상황에 적용

- 기존 방식

[기존 방식]

let name = "스파르타";
let job = "developer";

let user = {
  name: name,
  job: job
}

console.log(user);
//{name: "스파르타", job: "developer"}

- 최신 방식

let name = "스파르타";
let job = "developer";

let user = {
	name,
    job
}

console.log(user);
//{name: "스파르타", job: "developer"}

- 기존 key: value 형태에서 단순히 변수명만 작성 시 변수명과 동일한 필드가 생성되고, 그 변수 값이 대입

 

5) map : 반복문의 또다른 방식

- 기존 for문 사용

let numbers = [1,2,3,4,5,6,7];
for(let i=0; i<numbers.length; i++){
	console.log(numbers[i]);
}

- But. 리스트의 길이 값을 모를 경우 map 함수 이용

let numbers = [1, 2, 3, 4, 5, 6, 7]

//동일한 결과 출력
numbers.map((value, i) => {
	console.log(value, i)
})

numbers.map(function(value, i) {
	console.log(value, i)
})

//1 0
//2 1
//3 2
//4 3
//5 4
//6 5
//7 6

 

 

5. 1주차 끝&숙제설명

숙제 1 : 배열에서 특정 원소('딸기') 개수 구하기 - map 함수 사용

let fruit_list = ['사과','감','감','배','포도','포도','딸기',
'포도','감','수박','딸기']
let count = 0
fruit_list.map(function (item, index) {
               if(item == '딸기') {
                   count+=1
               }
})
console.log(count)
//정답
let fruit_list = ['사과','감','감','배','포도','포도','딸기','포도','감','수박','딸기']
let count = 0;
fruit_list.map((f)=>{
    if(f == "딸기") count += 1
})

console.log(count)

 

숙제 2 : filter 함수로 '포도'만 들어 있는 podo_list 구현해보기

let fruit_list = ['사과','감','감','배','포도','포도','딸기',
'포도','감','수박','딸기']
let result = fruit_list.filter(str=> str=='포도')
console.log(result)
//정답
let fruit_list = ['사과','감','감','배','포도','포도','딸기',
'포도','감','수박','딸기']

let podo_list = fruit_list.filter((f)=>{
	return f == '포도'
})

console.log(podo_list) //['포도','포도','포도']

*result가 아니라 podo_list로 변경해야 한다.

반응형

'개발일지 > 스파르타코딩클럽_앱개발' 카테고리의 다른 글

Day03(3-1~3-7)  (0) 2022.08.04
Day02(2-1~2-7)  (0) 2022.07.23