달거북씨 2022. 7. 17. 14:27

1. each()

each() 메서드는 객체나 배열에서 모두 사용할 수 있는 범용적인 반복 함수이다.

$.each(object, function(index, item){});
  • object : 대상을 전달
  • function(index, item){}
    - index : 인덱스 값
    - item : 해당 인덱스가 가진 값

 

[예제 코드]

let arr = ['다음', '네이버', '구글'];
$.each(arr, function(index, item){
    let result = '';
    result = index + " : " + item;
    document.write(result + "<br>")
});

 

[출력 결과]

 

 

 

1-1. 객체 요소 출력하기

[예제 코드]

let obj = {
    daum : 'http://www.daum.net',
    naver : 'http://www.naver.com'	
};

$.each(obj, function(index, item){
    // index : 객체의 키
    // item : 객체의 값
    // 매개 변수이기 때문에 이름은 바꿔도 상관없음!!
    let result = '';
    result += index + ' : ' + item;
    document.write(result + '<br>');
});

 

[출력 결과]

 

 

 

1-2. 배열 요소 출력하기

[예제 코드]

let arr = [
    {title : '다음', url : 'http://www.daum.net'},
    {title : '네이버', url : 'http://www.naver.com'}
];

$.each(arr, function(index, item){
    let result = '';
    result = index + " : " + item.title + ", " + item.url;
    document.write(result + "<br>")
});

 

[출력 결과]

 

 

 

1-3. 선택자의 객체 가져오기

[예제 코드]

<body>
	<ul class="list">
		<li>HTML</li>
		<li>CSS</li>
		<li>JavaScript</li>
	</ul>
	
	<script type="text/javascript">
		$('.list li').each(function(index, item){
			// index : 말 그대로 index
			// item : 해당 선택자인 객체
			$(item).addClass('li_0' + index);
		});
		
	</script>
	
	<!-- 
		addClass 결과 
		<li class = "li_00">HTML</li>
		<li class = "li_01">CSS</li>
		<li class = "li_03">JavaScript</li>
	-->  
</body>

 

 

 

1-4. 문제 풀어보기

<문제 1>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<style>
	.s1{color: tomato;}
	.s2{color: powderblue;}
	.s3{color: green;}
	.s4{color: brown;}
</style>
</head>
<body>
	<p>HTML</p>
	<p>JavaScript</p>
	<p>Java</p>
	<p>DBMS</p>
	
	<script>
		/* 
			each문을 사용해서 스타일 클래스 p 태그에 적용하기
			HTML에는 style class s1,
			JavaScript에는 style class s2,
			Java에는 style class s3,
			DBMS에는 style class s4
		*/	
	</script>
</body>
</html>

 

<풀이>

$('p').each(function(index, item){
    $(this).addClass('s' + (index+1));
});

 

<문제 2>

<!DOCTYPE html>
<html>
<head>
<meta charset="UTF-8">
<title>Insert title here</title>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.6.0/jquery.min.js"></script>
<style>
	.s1{color: tomato;}
	.s2{color: powderblue;}
	.s3{color: green;}
	.s4{color: brown;}
</style>
</head>
<body>
	<p>HTML</p>
	<p>JavaScript</p>
	<p>Java</p>
	<p>DBMS</p>
	
	<script>
		/* 
			<문제2>
			each문을 사용해서 특정 P태그에 스타일 클래스 적용하기
			HTML에는 style class s1,
			JavaScript에는 style class s2
		*/
		
		$('p').each(function(index, item){
			if(index == 2){
				return false;
			}
			
			$(this).addClass('s' + (index + 1));
		});
	</script>
</body>
</html>

 

<풀이>

$('p').each(function(index, item){
    if(index == 2){
        return false;
    }

    $(this).addClass('s' + (index + 1));
});

 

 


 

 

2. extend()

두 개 이상의 객체의 모든 속성을 하나의 객체로 병합한다. 

 

[예제 코드]

let obj1 = {
    "name" : "google"
};

let obj2={
    "url" : "www.google.com",
    "abc" : "def"
};

// 이 메소드는 인수로 전달받은 첫 번째 객체에 두번째 이후 객체의 모든 속성값을 추가한다.
$.extend(obj1, obj2);

$.each(obj1, function(key, value){
    document.write("key = " + key 
        + ", value = " + value + "<br>");
});

 

[출력 결과]

obj2가 obj1에 합쳐져서 obj1만 출력해도 다 출력된다.

 

 

 

2-1. value가 중복될 경우

[예제 코드]

let obj1 = {
    "name" : "google"
};

let obj2={
    "url" : "www.google.com",
    "abc" : "def"
};

let obj3 = {
    "name" 	: "hkd",
    "url" 	: "www.hkd.com",
    "book"	: "jQuery"
};

$.extend(obj1, obj2, obj3);

$.each(obj1, function(key, value){
    document.write("key = " + key 
        + ", value = " + value + "<br>");
});

 

[출력 결과]

▶ value는 중복이 가능하지만, key는 중복이 불가능하다.

▶ 따라서 name, url의 value가 가장 마지막 obj3의 값으로 출력된다.

728x90