본문 바로가기

공부/화면구현 UI

7월9일 - JavaScript 2

JavaScript

 

6. JavaScript Arrays (배열) 

 - 배열이 있다는 것은 순서(index)가 있다는 뜻 

 - 자바의 배열과는 다르다.

 - 배열의 진화된 모습은 JSON이다.

 

 

  1) 표현방법, element 요소, index 순서 

 

 

//old version
var points=new Array(40,100,1,5,25,10);
document.write(points);        //배열요소전체
document.write("<hr>");
document.write(points.length); //배열요소갯수 

//new version
var points = [40, 100, 1, 5, 25, 10]; 
for(idx=0;idx<points.length;idx++){
	document.write(points[idx]);
	document.write("<hr>");
}//for end

 

 

 

  2) 배열선언

    - 중간에 요소가 비어있어도 인정을 해준다. 

 

var fruits=["Banana","Orange","Apple","Mango"];
fruits[6]="Lemon";
document.write(fruits);
document.write("<hr>");
document.write(fruits.length+"<br>");
document.write(fruits[4]);

 

   분석-> fruit[4] 의 배열의 요소는 존재하지않지만 요소의 갯수에는 포함이 되어있기에 undefined가 뜬다.

 

 

  3) 배열 관련 메소드

 

var fruits = ["Banana", "Orange", "Apple", "Mango"];
document.write(fruits);
document.write("<hr>")
->Banana,Orange,Apple,Mango

document.write(fruits.toString());
document.write("<hr>")
->Banana,Orange,Apple,Mango

document.write(fruits.join(" * "));
document.write("<hr>")
->Banana * Orange * Apple * Mango

//배열 마지막 요소 제거
fruits.pop();
document.write(fruits.toString());
document.write("<hr>")
->Banana * Orange * Apple * Mango

//배열 마지막 요소 추가
fruits.push("Kiwi");
document.write(fruits.toString());
document.write("<hr>")
->Banana,Orange,Apple,Kiwi
           
//배열 첫번째 요소 제거
fruits.shift();
document.write(fruits.toString());
document.write("<hr>")
->Orange,Apple,Kiwi
           
//배열 첫번째 요소 추가
fruits.unshift("Lemon");
document.write(fruits.toString());
document.write("<hr>")        
->Lemon,Orange,Apple,Kiwi

//배열요소 합치기
var myGirls = ["Cecilie", "Lone"];
var myBoys = ["Emil", "Tobias", "Linus"];
var myChildren = myGirls.concat(myBoys);
document.write(myChildren.toString());
->Cecilie,Lone,Emil,Tobias,Linus

 

  4) Array 정렬

     - 문자정렬

 

//array sort
var fruits = ["Banana", "Orange", "Apple", "Mango"];

//오름차순 정렬
fruits.sort();
document.write(fruits.toString());
document.write("<hr>")
->Apple,Banana,Mango,Orange

//내림차순 정렬
fruits.reverse();
document.write(fruits.toString());
document.write("<hr>")
->Orange,Mango,Banana,Apple

 

     - 숫자정렬

 

//Numeric Sort
var points=[40,100,1,5,25,10];

//오름차순 정렬
points.sort(function(a,b){return a-b});
document.write(points.toString());
document.write("<hr>")
->1,5,10,25,40,100

//내림차순 정렬
points.sort(function(a,b){return b-a});
document.write(points.toString());
document.write("<hr>")
->100,40,25,10,5,1

 

 

7. JavaScript JSON (JavaScript Object Notation)

 

 1. JSON?

   - 자바스크립트 객체 표기법

   - 배열을 객체화

   - 속성(name) : 값(value) 쌍으로 데이터가 구성

   - 비동기식 통신(문자단위 통신)에서 XML을 대체하는 주요 데이터 포맷이다.

   - AJAX, NoSQL 등에서 주로 사용된다.

 

   - 기본 배열

 

var person=["John","Doe",46];
document.write(person.length+"<hr>"); //3
document.write(person[0]+"<hr>") //Jhon
document.write(person[1]+"<hr>") //Doe
document.write(person[2]+"<hr>") //46

 

   - 배열의 인덱스값에 이름을 붙일 수 있다. 

 

var person=[];
person["firstName"]="Jhon";
person["lastName"]="Doe";
person["age"]=46;
document.write(person.length+"<hr>"); //0
document.write(person[0]+"<hr>") //undefined
document.write(person[1]+"<hr>") //undefined
document.write(person[2]+"<hr>") //undefined

document.write(person["firstName"]+"<hr>"); //Jhon
document.write(person["lastName"]+"<hr>"); //Doe
document.write(person["age"]+"<hr>"); //46

 

 

 2. XML 문법

   - custom tag(사용자 정의 태그) 기반

   - 환경설정, 안드로이드기반의 앱개발 View단 구성

   - 활용 예시)

     <person>

          <firstName>John</firstName>

          <lastName>Doe</lastName>

          <age>46</age>

     </person>

 

 3. JSON 문법

   - name(key)과 value 한쌍으로 구성

   - name과 value는 : 기호로 구분한다

   - name 구성시 "" 기호를 생략가능하다

   - {} 안의 데이터를 저장한다.

   - 형식) {name: value, "name":value, name: value}

 

 

 1) 예) {}안에 한사람의 정보를 저장했다.

       {"firstName": "Jhon", "lastName": "Doe", "age": 46}

 

   - 한 사람 

 

//1) name에 ""기호 생략가능
var person={firstName: "Jhon", lastName: "Doe", age: 46}
//2)
var person={"firstName": "Jhon", "lastName": "Doe", "age": 46};
document.write(person["firstName"]); //"Jhon"
document.write(person["lastName"]); //"Doe"
document.write(person["age"]); //46
document.write("<hr>")
document.write(person.firstName); //"Jhon"
document.write(person.lastName); //"Doe"
document.write(person.age); //46
document.write("<hr>")

->JhonDoe46

 

    - 여러 사람 

 

var persons=[
		{"firstName": "Jhon", "lastName": "Doe", "age": 46},
		{"firstName": "Tom", "lastName": "Joe", "age": 56},
		{"firstName": "Irene", "lastName": "Yoe", "age": 16}
];
document.write(persons.length);	//3
document.write(persons[0]);	 //[object Object]
document.write(persons[1]);	 //[object Object]
document.write(persons[2]);	 //[object Object]
document.write("<hr>");

for(idx=0;idx<persons.length;idx++){
	document.write(persons[idx].firstName);
	document.write(persons[idx].lastName);
	document.write(persons[idx].age);
	document.write("<hr>");
}

 

 

  2) JSON.parse()

    - String형태의 JSON문법을 분리할 때,

    - txt에 ' ' 형태의 string을 JSON.parse(txt)를 해주어 JSON문법으로 변환해 해석해준다.

 

 

var txt='{"name":"Irene", "age":16, "city":"New York"}';
var obj=JSON.parse(txt); //JSON문법으로 변환
document.write(obj.name); 
document.write(obj.age);
document.write(obj.city);

->Irene16New York

 

  3) JSON.stringify()

    - JSON값을 일반 문자열로 반환

 

var obj={name:"Irene", age:16, city:"New York"};
var myJSON=JSON.stringify(obj);
document.write(myJSON+"<br>");
document.write(myJSON.length);

->{"name":"Irene","age":16,"city":"New York"}
->43

 

  4) JSON Array

    - 배열안에 있는 배열을 찾기

    - myObj 배열 안에 있는 cars의 배열의 값을 묻는다.

 

var myObj, x;
myObj = {
	 "name":"John",
	 "age":30,
	 "cars":[ "Ford", "BMW", "Fiat" ]
};
x = myObj.cars[0];
document.write(x);

->Ford

 

  

8. JavaScript Method

 

 함수, function, Method

  - 함수 정의(작성), 함수 호출

  - 함수의 리턴값은 존재하지만, 리턴형은 없다.

  - 매개변수(parameter)의 자료형은 없다.

  - 형식) function 함수명(){}

 

  1) 리턴값이 없는 경우

 

<!DOCTYPE html>
<html lang="ko">
<head>
	<meta charset="utf-8">
	<title>08_함수.html</title>
	<style></style>
</head>
<body>
	<script>
	//1) 리턴값이 없는 경우
	function test(){
		alert("안녕~!~!");
	}//test() end	

	function abs(a){ //매개변수의 자료형이 없다.
		if(a<0){
			alert(-a);
		}else{
			alert(a);
		}
	}//abs() end

	function max(a,b,c){
		var result1=(a>b)?a:b;
		var result2=(result1>c)?result1:c;
		alert(result2);
	}//max() end

	function hap(a,b){
		if(a>b){
			var tmp=a, a=b, b=tmp;
		}
		var sum=0;
		for(n=a; n<=b; n++){
			sum+=n;
		}
		alert(sum);
	}//hap() end

	function diff(a,b){
		var c=a-b;
		if(c<0){
			c=-c;
		}
		alert(c);
	}//diff() end

        //1) 리턴값이 없는 경우
	test(); //함수호출
	abs(3);     //3
	abs(-5);    //5
	abs(-5.6);  //5.6
	abs(8.5);   //8.5
	max(7,8,9); //9
	hap(4,6);   //두수 사이의 합
	diff(7,1);  //두수의 차 6
	</script>
</body>
</html>

 

  2) 리턴값이 있는 경우

 

1) 카운트함수
function count(a,b){
	var cnt=0;
	for(idx=a; idx<b; idx++){
		if(idx%3==0){
			cnt++;
		}
	}
	return cnt; //리턴값의 자료형이 존재하지 않는다
}//count() end

2) 평년, 윤년 구하기
function leap(y){
	if(y%4==0 && y%100!=0 || y%400==0){
		return true;
	}else{
		return false;
	}
}//leap() end

3-1) 팩토리얼 구하기
function fact(a){
	var gop=1;
	for(idx=a; idx>=1; idx--){
		gop=gop*idx;
	}
	return gop;
}

3-2) 팩토리얼 구하기
function fact(a){
	if(a==0){
		return 1;
	}else{
		return a*fact(a-1);
	}
}//fact() end
	
//----------------------------------------------------------------------
	//2) 리턴값이 있는 경우
	var result=count(1,100); //3의 배수의 갯수를 반환
	alert(result);

	if(leap(2019)){
		alert("윤년");
	}else{
		alert("평년");
	}//if end

	//재귀적 함수 호출 관계
	result=fact(4);
	alert(result);

	</script>
</body>
</html>

 

 

9. JavaScript Math Method

 

document.write(Math.PI+"<br>");
document.write(Math.round(4.7)+"<br>");
document.write(Math.round(4.4)+"<br>");
document.write(Math.abs(-4.7)+"<br>");
document.write(Math.ceil(4.4)+"<br>");
document.write(Math.pow(8,2)+"<br>");
document.write(Math.floor(4.7)+"<br>");
document.write(Math.min(0, 150, 30, 20, -8, -200)+"<br>");
document.write(Math.max(0, 150, 30, 20, -8, -200)+"<br>");
document.write(Math.random()+"<br>");

 

 

 

 

'공부 > 화면구현 UI' 카테고리의 다른 글

7월11일 - JavaScript 4  (0) 2019.07.11
7월10일 - JavaScript 3  (1) 2019.07.10
7월8일 - JavaScript 1  (0) 2019.07.08
7월4일 - UI 구현 CSS  (0) 2019.07.04
7월3일 - UI 구현 HTML3 + CSS  (1) 2019.07.03