웹프로그래밍

[Java Script] 자바 스크립트 객체_배열

비비펄 2023. 1. 5. 20:47

📌객체(object)란?

✔하나의 변수에 여러 속성을 저장할 수 있도록 해주는 데이터 타입

✔key/value가 한쌍으로 저장되는 구조, 그중 value가 함수로 정의된 것은 객체가 가지는 동작(메소드)

✔JavaScript는 객체 기반의 스크립트 언어로서, 거의 모든 것이 객체로 이루어져 있다.

 

Array[배열]객체

✔배열은 하나의 변수에 많은 값을 담을 수 있다.

✔인덱스 번호를 참조하여 값에 접근할 수 있다.

✔배열 요소의 타입이 고정되 있지 않으므로 같은 배열에 서로 다른 타입의 요소가 존재할 수 있다.

✔현재 배열의 크기보다 큰 인덱스를 사용하여 크기를 자동으로 증가 시킬 수 있다.

 

❗Array객체의 메소드

indexOf(item, start) 배열에서 요소를 찾아 위치를 반환
lastIndexOf(item, start) 역순으로 요소를 찾아 위치를 반환
push(a,b,c…) 배열 끝에 요소를 추가
pop() 마지막 요소를 제거하고 반환
shift() 배열 처음의 원소를 제거하고 반환
unshift(a,b,c…) 배열 처음에 요소를 추가한다.
reverse() 배열의 순서를 반대로 나타낸다
sort(sortfunction) 배열을 정렬한다
slice(start,end) start~end(포함하지 않음)범위의 요소들을 따로 떼어내어 새로운 배열을 만든다
join(deli) 배열 요소를 하나의 문자열로 합친다. 구분자를 지정할 수 있으며 생략시 콤마로 구분한다
<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<link rel="stylesheet" href="../css/public.css">
<script>
const arr = ["사과", "바나나", "복숭아", "사과", "참외", "수박", "사과", "파인애플"]

proc1= ()=>{
   
   //찾을 과일을 입력 
   vfr = prompt("찾을 과일을 입력하세요")
   //입력한 과일이 몇번째 있는지 ?
   idx = arr.indexOf(vfr);
   
   str="";
   if(idx < 0){
      str += `입력한 ${vfr}은(는) 없는 과일입니다...`;
   } else {
      str += `입력한 ${vfr}은(는) ${idx}번째 과일입니다...`;
   }
   
   document.querySelector("#res1").innerHTML = str;
   
}
proc2= ()=>{

   //찾을 과일을 입력 
   vfr = prompt("찾을 과일을 입력하세요")
   //입력한 과일이 몇번째 있는지 ?
   idx = arr.lastIndexOf(vfr);
   
   str="";
   if(idx < 0){
      str += `입력한 ${vfr}은(는) 없는 과일입니다...`;
   } else {
      str += `입력한 ${vfr}은(는) ${idx}번째 과일입니다...`;
   }
   
   document.querySelector("#res2").innerHTML = str;
   
   
   
}
proc3= ()=>{
   vfr = prompt("찾을 과일을 입력하세요");
   idx = 0;
   str = `입력한 ${vfr}은(는)`;
   flag = false;
   while(true){
      
      idx = arr.indexOf(vfr, idx);
      if(idx < 0){
         //처음부터 없는 것 또는 있다가 없는것
         if(!flag)
            str += `없습니다`
         else
            str += `있습니다..`
            
         break;
      }
      
      str += ` ${idx}번째 `;
      flag = true;
      idx++;
      
      
   }
   document.querySelector('#res2').innerHTML = str;
   
   
   
}
proc4=()=>{
	str =`원래 배열 ${arr} <br>`
	arr.push("자두", "오렌지");
	str +=`추가 후 배열: ${arr} <br>`
	
	document.querySelector('#res4').innerHTML = str;
}

proc5= ()=>{
	str =`원래 배열 ${arr} <br>`
	vpop = arr.pop();
	str +=`제거 후 배열: ${arr} <br>`
	str += `제거된 물품 : ${vpop} <br>`
	
    document.querySelector('#res5').innerHTML = str;
	   
}
proc6=()=>{
	str =`원래 배열 ${arr} <br>`
	
	narr = arr.slice(1,6);
	str +=`arr.slice(1,6) 후 : ${arr} <br>`;
	
	str += `arr.slice(1,6) 결과 새로운 배열 : ${narr}`;
	
	document.querySelector('#res6').innerHTML = str;
}
proc7=()=>{
	str =`원래 배열 : ${arr} <br>`
	//3번째 위치에서 1개를 삭제
	//arr.splice(3,1)
	//str +=`삭제 후 배열: ${arr} <br>`
	//-----------------------------------------------
	
	//2번째 위치에서 2개를 삭제하고 100,200,300을 삽입
 	//arr.splice(2, 2, 100,200,300);
 	//str +=`변경 후 : ${arr} <br>`;
	//-----------------------------------------------

	//5번째위치에 1,2,3,4,5를 삽입
	arr.splice(5,0,1,2,3,4,5);
	str +=`변경 후 : ${arr} <br>`;
	
	document.querySelector('#res7').innerHTML = str;
}
proc8 =()=>{
	str =`arr배열의 길이 : ${arr.length} <br>`;
	
	for(x in arr){
		str += `arr[${x}] : ${arr[x]} <br>`
	}
	
	document.querySelector('#res8').innerHTML = str;
	
	vs = arr.join(); //배열을 문자열로 변환
	
	str="vs문자열의 길이 : " + vs.length + "<br>";
	for(i in vs){
		str += `vs[${i}] : ${vs[i]} <br>`
	}
	
	document.querySelector('#res8').innerHTML += str;
}
</script>
<style>

input[type=button]{
   width : 150px;
   

}
</style>
</head>
<body>

<div class="box">
   <br><br>
   <input type="button" value="indexof" onclick="proc1()">
   <input type="button" value="lastIndexof" onclick="proc2()">
   <input type="button" value="indexof_start" onclick="proc3()">
   <br>
   
   <div id="res1"></div>
   <div id="res2"></div>
   <div id="res3"></div>
</div>
<div class="box">
   <br><br>
   <input type="button" value="push" onclick="proc4()">
   <input type="button" value="pop" onclick="proc5()">
   <br>
   
   <div id="res4"></div>
   <div id="res5"></div>
</div>
<div class="box">
   <br><br>
   <input type="button" value="slice" onclick="proc6()">
   <input type="button" value="splice" onclick="proc7()">
   <br>
   
   <div id="res6"></div>
   <div id="res7"></div>
</div>
<div class="box">
   <br><br>
   <input type="button" value="join" onclick="proc8()">
   <br>
   
   <div id="res8"></div>
</div>
</body>
</html>