HTML & CSS

20220119 - sort(), split(), join(), push(), pop(), shift(), unshift(), splice(), date, setTimeout, setInterval

yooky 2022. 1. 20. 01:27

sort() - 오름차순으로 배열을 정렬한다.

lotto.sort();
  • ASCII 문자 순서로 정렬되어 숫자의 크기대로 나오지 않음 숫자 정렬이 필요하다면 직접 반복문을 통해 정렬하자

 

split() - 문자열을 구분자 기준으로 쪼게어 배열로 만들어준다

var str = "사과,배,감";
var tmp = str.split(",");

 

join() - 배열에 구분자를 넣어 다시 문자열로 반환한다. 구분자는 생략가능

console.log(tmp.join());
console.log(tmp.join("💞💞💞"));

push() - 배열의 마지막 요소 뒤에 새 요소를 추가한다.

tmp.push("hi");

 

pop() - 배열의 마지막 요소를 제거한다

tmp.pop();

 

shift() - 배열의 첫 번째 요소를 반환하고 제거하겠다.

var a = tmp.shift(); // 반환한 값을 a에 저장
	console.log(a); 
	console.log(tmp);

unshift() - 해당 값을 배열의 첫 번째 요소로 추가

tmp.unshift("사과");

splice(위치,개수,넣을값들) - 해당 위치에 개수만큼 삭제 후 값들을 순차적으로 추가한다. 추가,제거,끼워넣기 작업 다 가능

tmp.splice(1,0,"귤") // 첫번째 요소로 귤 추가
console.log(tmp);
	
tmp.splice(1,2) // 1번인덱스부터 2개의 인덱스 삭제
console.log(tmp);
	
tmp.splice(0,1,"멜론") //0번 인덱스부터 1개 인덱스 삭제 후 멜론추가
console.log(tmp);

Date() - new Date()를 호출하면 새로운 Date 객체가 만들어지는데, 인수 없이 호출하면 현재 날짜와 시간이 저장된 Date 객체가 반환

var d = new Date();
console.log(d);
console.log(d.toUTCString()); // 객체에 든 시간 정보를 UTC 문자열로 리턴

타임스탬프(timestamp) - 1970년의 첫날을 기준으로 흘러간 밀리초를 나타내는 정수. 타임스탬프를 사용하면 날짜를 숫자 형태로 간편하게 나타낼 수 있다

 

getFullYear() - 연도(네 자릿수)를 반환한다.

getMonth() - 월을 반환한다(인덱스 번호로 반환되기때문에 0 ~ 11로 출력된다 +1해주면 해결됨)

getday() - 요일을 반환한다 (일요일 : 0 ~ 토요일 : 6)

getDate() - 날짜를 반환한다(1 이상 31 이하)

getHours(), getMinutes(), getSeconds(), getMilliseconds() - 시, 분, 초, 밀리초를 반환한다.

	var d = new Date();
	console.log(d.getFullYear());
	console.log(d.getMonth()+1);
	console.log(d.getDate());
	console.log(d.getDay());
	console.log(d.getHours());
	console.log(d.getMinutes());
	console.log(d.getSeconds());

 

setTimeout(함수, 시간, 값들) -  값들을 함수에 전달하고 그 함수를 시간뒤에 실행하겠다는 작업.  값들은 선택사항

var timeout = 	setTimeout(function(msg){
					alert(msg + "3초 지났다.");}
					,3000,"hi!");
	function helpme(){
		clearTimeout(timeout);
	}
<body>
<input type="button" value = "살려줘" onclick="helpme();"/>
</body>

살려줘 버튼을 클릭하면 clearTimeout이 적용되어 3초가 흘러도 alert가 뜨지 않는다 

  • clearTimeout(타임아웃객체) - 해당 타임아웃객체를 취소 및 제거한다
  • 1s = 1000ms 

setTimeout,setInterval(함수,시간,값들 ...) - 값들을 함수에 전달하고 그 함수를 시간마다 실행하겠다는 작업.  값들은 선택사항

setInterval(function(){
		d = new Date();
		var time = d.getHours().toString().padStart(2,"0")  
		+ ":" + d.getMinutes().toString().padStart(2,"0")
		+ ":"+d.getSeconds().toString().padStart(2,"0");
		document.getElementById("txt").value = time;
	},1000);

 

+) padstart는 문자열에만 적용되는거여서 시간을 tostring으로 문자열로 바꾸고 padstart를 사용해야함

 

+) 함수를 반복호출하다가 잠시 중단하고 다시 시작하고 싶다면?

setInterval 함수의 반환값을 변수에 할당해두고, clearInterval(변수)를 호출하여 반복을 중단하고, 다시 setInterval로 재시작해주면 된다. => 애니메이션효과에서 사용

 

setInterval을 이용한 애니메이션 효과

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<style type="text/css">
#imgBox{
	width: 250px;
}
</style>
<script type="text/javascript">
var interval = null;
var imgs = ["cat1.png","cat2.png","cat3.png"];
var pos = 0;

interval = setInterval(play,3000);

function play(){
	pos++;
	
	if(pos == imgs.length){
		pos = 0;
	}
	document.getElementById("imgBox").src = imgs[pos];
	fade();
}
function fade(){
	
	//FadeIn
	for(var i = 0; i <= 10; i++){
		setTimeout(function(val){
			document.getElementById("imgBox").style.opacity = 0.0 + 0.1 *val;
		},100*i,i);
		
	}
	
	//Fadeout
	for(var i = 0; i <= 10; i++){
		setTimeout(function(val){
			document.getElementById("imgBox").style.opacity = 1.0 - 0.1 *val;
		},2000 + 100*i,i);
		
	}
	
	
}

function pauseImg(){
	if(interval == null){
		interval = setInterval(play,3000);
		
	} else {
		clearInterval(interval);
		interval = null;
	}
}

</script>
</head>
<body>
<input type="button" value="pause" onclick="pauseImg();"/>
<img alt="이미지들" src="cat1.png" id="imgBox"/>

	<script type="text/javascript">
		fade();
	</script>
</body>
</html>