'2018/04/29'에 해당되는 글 3건

728x90

each 메소드와 map 메소드의 차이점을 알아보자.


<!DOCTYPE html>
<html>
<head>
<script src="https://ajax.googleapis.com/ajax/libs/jquery/3.3.1/jquery.min.js"></script>
<script>
var intArray = new Array(1, 2, 3, 4, 5);
$.each(intArray, function(index, element) {
  if (element === 3) {
    return false;
  }
  console.log(element);
});

$.map(intArray, function(element, index) {
  if (element === 3) {
    return false;
  }
  console.log(element);
});
</script>
</head>
<body>
</body>
</html>


위 예제를  실행해보면 결과에 차이가 난다.

$.map([], callback(elementOfArray, indexInArray))
$.each([], callback(indexInArray,
element))


callback function 의 index, element(item) 위치가 서로 반대다.

each 메소드는 index 가 먼저고, 그 다음에 element 가 온다.


each 메소드

- jQuery 객체/배열의 수 만큼 반복하고, 선택된 요소들에 함수를 실행한다.

- 배열과 length 속성을 갖는 배열과 비슷한 객체들을 index를 기준으로 반복할 수 있다.

- jQuery 유틸리티 메소드 : .each(object, function(index, element) ) { 실행 함수 }

- jQuery 일반 메소드 : $(selector).each(function(index, item){ 실행함수 })

- jQuery 객체들을 위한 반복 로직을 처리하기 이해 만들어졌다.

- each 메소드에서 this 는 current element 를 가리킨다.


each 메소드는 원래의 배열을 반환(returns the original array) 하지만,

map 메소드는 제공된 배열 데이터를 변환시켜 다시 새로운 배열 객체를 반환(returns a new array)한다.

map 메소드를 과다 사용하면 많은 메모리를 낭비할 수 있다.


$(selector).each(...) 는 selector 아이템으로 반복 처리한다.
$.map() 메소드는 selector 를 사용하지 않는다.


실행결과는

each 메소드는 조건이 false를 만나면 loop 를 break 하여 결과는 1, 2 만 나온다.

map 메소드는 조건만 skip 하여 결과는 1, 2, 4, 5 가 나온다.

블로그 이미지

Link2Me

,
728x90

jQuery map()함수는 배열 데이터를 변환시켜 새로운 배열 객체를 만든다.

jQuery 1.6 부터 Object 도 지원한다.

$.map() 함수를 사용하기 위해서는 반드시 완전한 배열로 바꿔줘야 한다.


<input type="text" name="item[1]" class="item" value="1">
<input type="text" name="item[2]" class="item" value="50">
<input type="text" name="item[3]" class="item" value="12">


jQuery.map(array, callback(elementOfArray, indexInArray) )
- array : 변환할 배열
- callback(elementOfArray, indexInArray) 모든 요소에 대해 실행될 함수.
  첫번째 인자는 배열 요소(item),
  두번째 인자는 배열 인덱스


jQuery.map(arrayOrObject, callback(value, indexOrKey))
- arrayOrObject 변환할 배열 또는 오브젝트
- callback( value, indexOrKey ) 모든 요소에 대해 실행될 함수.
  첫번째 인자는 value,
  두번째 인자는 배열 또는 오브젝트의 index 또는 key

아래 코드는 위와 같은 결과를 얻어내는 jQeury 함수와 스타일 시트다.

모양을 좀 더 미려하게 보여주는 CSS 코드라고 보면 된다.





블로그 이미지

Link2Me

,
728x90

ㅇ 배열
   - 배열은 여러 개의 변수를 한곳에 저장할 수 있는 자료형이다.
   - 자바스크립트에서는 문자열과 숫자, 불, 함수, 객체와 정의되지 않은 자료형까지 총 6가지의 자료형이 존재
   - 배열은 이중 객체의 일종으로, 대괄호([])를 이용해서 생성
   - 배열 안에 입력된 값을 배열 요소라고 부른다.
   - alert(array[1]); // 배열 기호 안에 들어간 숫자를 인덱스(Index)라고 부른다.
   - for (var i in array) 은 for (var i = 0; i < array.length; i++) 와 같은 의미


ㅇ 배열 선언 방법

    - 배열 리터럴 : 대괄호([]) 내에 데이터를 나열하여 배열을 선언하고, 데이터를 할당할 수 있다.

       var arr = [데이터1, 데이터2, 데이터3, ...., 데이터 n];

    - 배열 객체 :

       var arr = new Array(); // 배열 개수 미지정 객체배열 생성

       arr[0] = 2; arr[1] = "one"; arr[2] = 5;


       var arr = new Array(3); // 배열 개수 지정

       arr[0] = 2; arr[1] = "one"; arr[2] = 5;


       var arr = new Array(1, 2, 3, 4, 5); // 배열을 선언함과 동시에 데이터를 배열에 할당


    - 다차원 배열 선언 : 자바스크립트는 기본적으로 다차원 배열을 지원하지 않는다.

      배열안에 배열을 넣는 방식으로 사용은 가능하다.

       var arr = new Array();

       var arr[0] = new Array();

       var arr[0][0] = new Array();


ㅇ 배열 객체의 메소드 및 속성

join(연결문자)

 배열에 저장된 모든 원소를 문자열로 변환한 후 연결하여 출력한다.

 var arr = new Array(1, 2, 3, 4, 5);

 arr.join("-");

 결과 : 1-2-3-4-5

 reverse()

 배열 요소의 순서를 반대로 정렬한다.

 var arr = new Array(1, 2, 3, 4, 5);

 arr.reverse();

 결과 : 5,4,3,2,1

 sort()

 배열 객체 데이터를 오름차순으로 정렬한다.

 push()

 배열의 마지막 위치에 데이터를 추가한다.

 var arr = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

 arr.push("레몬");

 document.getElementById("demo").innerHTML = arr;

 pop()

 배열의 마지막 위치의 데이터를 삭제한다.

 shift() 배열의 첫번째 위치의 데이터를 삭제한다.
 
var arr = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
 document.write(arr.shift()+"<br />");
 document.write(arr+"<br />");
 출력 결과 :
2,3,4,5,6,7,8,9,10
 unshift() 배열의 첫번째 위치에 데이터를 추가한다.
 var arr = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
 document.write(arr.unshift("소림사")+"<br />");
 document.write(arr+"<br />");
 출력 결과 :
소림사,1,2,3,4,5,6,7,8,9,10
 length 배열에 저장된 총 데이터의 개수를 반환한다.
 slice

 배열 원소 중 부분적인 범위 내의 원소만 선택하여 배열을 만든다.

 var arr = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
 var slice = arr.slice(3,7); // 인덱스는 0부터 시작하므로 4번째 인덱스부터
 // slice(start, end); 배열의 start index부터 end 바로 전의 index까지를 선택
 document.write(slice);

 splice

 배열의 지정된 데이터를 삭제하고, 그 구간에 새 데이터를 추가하거나 삭제

 var arr = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

 document.write(arr.splice(1,3)); // 두번째 인덱스부터 3개를 삭제

 // 즉 2, 3, 4 를 삭제한다.

 document.write(arr+"<br />"); // 삭제되고 남은 배열 데이터만 출력한다.

 var arr = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
 document.write(arr.splice(1,3,"마마무","동방신기","소녀시대"));
 
// 두번째 인덱스부터 3개를 삭제하고,

 // 마마무, 동방신기, 소녀시대를 삭제된 곳에 추가한다.
 document.write(arr+"<br />");

 출력 결과 : 1,마마무,동방신기,소녀시대,5,6,7,8,9,10

 filter 배열의 데이터 중에 조건이 참인 데이터만 반환하여 새로운 배열을 생성한다.
 
var arr = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
 var fdata = arr.filter(function(val){
     return val >= 5;
 });
 document.write(fdata + "<br />"); 


ㅇ 배열 활용

 최대값 구하기

 배열의 최대값 구하기

 var arr = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);

 var min = Math.max.apply(null, arr);

 최소값 구하기
 배열의 최소값 구하기
 var arr = new Array(1, 2, 3, 4, 5, 6, 7, 8, 9, 10);
 var min = Math.min.apply(null, arr);

 이차원 배열

<script>
var arr = new Array();

arr[0] = new Array(); //2차배열 선언
arr[1] = new Array();

arr[0][0] = "이순신";
arr[0][1] = "24세";

arr[1][0] = "홍길동";
arr[1][1] = "35세";

for(var i=0; i<arr.length; i++){
    for(var j=0; j<arr[i].length; j++){
        document.write(arr[i][j]+"<br />");
    }
}
</script>



'Web 프로그램 > js, jQuery' 카테고리의 다른 글

jQuery each 메소드와 map 메소드 차이점  (0) 2018.04.29
jQuery map 함수  (0) 2018.04.29
jQuery - input 배열 수 세기  (0) 2018.04.20
jQuery 체크박스 선택 여부 확인  (0) 2018.04.15
Popup Modal with jQuery  (0) 2018.04.12
블로그 이미지

Link2Me

,