πŸ‘¨‍πŸ’» Web Development/HTML | CSS | JS | jQuery

[Day4] JS 4 - λ¬Έμžμ—΄ 검색, 숫자, λ°°μ—΄, λ‚ μ§œ

Kim_dev 2022. 11. 24. 10:29

[Day4] JS 4 [11/23] 

 

js λ¬Έμžμ—΄ : 검색

 

λ¬Έμžμ—΄ 일치

   let str = "μ•ˆλ…•ν•˜μ„Έμš”, 홍길동 μž…λ‹ˆλ‹€. - 홍길동 μ™ˆ -";
  
   console.log( str.indexOf("홍길동", 0) );  // 7
   console.log( str.indexOf("홍길동") );       // 7
  
   //console.log( str.lastIndexOf("홍길동", from)  );       // 7
   console.log( str.lastIndexOf("홍길동")  );       // 18
  
   // μ°ΎλŠ” λ¬Έμžμ—΄μ΄ μ—†λŠ” 경우 :   -1 λ°˜ν™˜
  
   // indexOf(), lastIndexOf()와 search()의 차이점 : μ •κ·œν‘œν˜„μ‹
   console.log(  str.search(/홍길동/) );  // 7
  
   console.log( str.match("κΉ€κΈ°μˆ˜") );  // μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ΄ μ—†λŠ” 경우 : null λ°˜ν™˜
   console.log( str.match(/홍길동/ig) );   
   // alert(  typeof str.match(/홍길동/ig) );   // object   λ°°μ—΄  
  
   // ES 2020 μƒˆλ‘œ μΆ”κ°€λœ λ©”μ„œλ“œ 
   //matchAll() μΌμΉ˜ν•˜λŠ” κ²°κ³Όλ₯Ό ν¬ν•¨ν•˜λŠ” 반볡자(iterator)λ₯Ό λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜
   const iterator = str.matchAll( /홍길동/g );
   // μžλ°” : console.log(  Arrays.toString( λ°°μ—΄λͺ… )  )
   console.log(   Array.from( iterator ) );
  
   
   // ES6 μƒˆλ‘œ μΆ”κ°€λœ λ©”μ„œλ“œ 
   // IE μ§€μ›λ˜μ§€ μ•ŠλŠ”λ‹€.  
   // μΌμΉ˜ν•˜λŠ” λ¬Έμžμ—΄μ„ ν¬ν•¨ν•˜κ³  μžˆλŠ”μ§€ μ—¬λΆ€λ₯Ό boolean ν˜•μœΌλ‘œ λ°˜ν™˜.
   console.log(  str.includes("홍길동") );  // true
   
   
   var url = "www.sist.co.kr";
   
   // ES6 μƒˆλ‘œ μΆ”κ°€λœ λ©”μ„œλ“œ 
   // http://  λ¬Έμžμ—΄λ‘œ μ‹œμž‘
   //   ??       λ¬Έμžμ—΄λ‘œ λλ‚˜λ‹ˆ
   console.log(  url.startsWith( "http://") );		    // false
   console.log(  url.endsWith( "co.kr") );		     // true

μ΄μŠ€μΌ€μ΄ν”„λ¬Έμž

    let text = "he\'s ~~";
   //let text = 'he\'s ~~';   // λ¬Έμžμ—΄ 내뢀에  ' ν™‘λ”°μ˜΄ν‘œλ₯Ό μ‚¬μš©ν•΄μ•Ό λœλ‹€λ©΄

-λ¬Έμžμ—΄ λ³€μˆ˜ 쀑간에 λ“€μ–΄κ°€κ²Œ-

    var name = "홍길동";
    var age = 20;
    
    //                  이름은 '홍길동'이고, λ‚˜μ΄λŠ” 20살이닀.    
    // var result = "이름은 '"+name+"'이고, λ‚˜μ΄λŠ” "+age+"살이닀.";
    // Java        String.format(   "이름은 '%s'이고, λ‚˜μ΄λŠ” %d살이닀."     , name, age);
    //                 printf( format, name, age);
    
    // js μ—μ„œλ„ λ³€μˆ˜λ₯Ό μ‚¬μš©ν•΄μ„œ 좜λ ₯ν•  수 μžˆλ„€μš”... 
    //        `            λ°±ν‹±λ¬Έμž
    var result = ` > 이름은 '${ name }'이고, λ‚˜μ΄λŠ” ${ age }살이닀. `;
    // console.log( result );

-foreach-

   let header = "TEST";   
   let html = `<h3>${ header}</h3>`;
   
   let tags = ["javascript", "jquery", "java"];  // js λ°°μ—΄            
   // let tags = {};  // js 객체
   
   // java  foreach문
   // js forin λ¬Έ
   // js forof λ¬Έ
   for (let tag of tags) {
	  html +=  `<li>${ tag }</li>`;
   } // for
   
   $("#demo").html(  html );

js 숫자 (Number)

- js 숫자 -                     (  X   int, short, long,   float, double )

- μ •μˆ˜, μ‹€μˆ˜ ꡬ뢄없이 μ €μž₯. - number νƒ€μž…

- js λŠ” 항상 64λΉ„νŠΈ μ €μž₯ 

    var n = 3;
    var n = 3.14;
    var n = 3e+5;
    
    // 3 + 5     8
    // "3" + 5   "35"
    //  3 + "5"   "35"
    //  1 + 3 + "5"   "45"
    //  숫자 => λ¬Έμžμ—΄ ν˜•λ³€ν™˜
    //   7 + ""            "7"
    
    
    //  + λ§μ…ˆ, λ¬Έμžμ—΄ μ—°κ²°μ—°μ‚°μž. 
    //  + μ œμ™Έν•œ  숫자 κ΄€λ ¨ μ—°μ‚°μžλŠ” μžλ™μœΌλ‘œ λ¬Έμžμ—΄μ„ 숫자둜 λ³€ν™˜ν•˜λ €κ³  ν•œλ‹€. 
    var a = "100";
    var b = "10";
    console.log(  a - b );   // 100/10   =  10
    console.log(  a * b );   // 100/10   =  10
    console.log(  a / b );   // 100/10   =  10

-NaN (not a number) λ¦¬ν„°λŸ΄-

    // console.log(   100 / "apple"   );   // NaN ( Not a Number) λ¦¬ν„°λŸ΄
    // console.log( typeof NaN );  // number
    
    console.log(   100 / 0   );  // Infinity
    console.log(   100 % 0   ); // NaN
    
    
    // isNaN()
    
    console.log(  isNaN( 100 % 0 ));  //  true
    console.log(  isNaN( "100" ));  //  false
    console.log(  isNaN( "100a" ));  // true
    
    // [문제]  μž…λ ₯받은 값이 숫자만 μž…λ ₯ν–ˆλŠ” μ²΄ν¬ν•˜κ³  μ‹Άλ‹€  -  isNaN()
    
    console.log(   NaN + 5  );    // NaN
    console.log(   NaN + "5"  );  // "NaN5"

-μ§„μˆ˜-

  // jsμ—μ„œ    Oxλ₯Ό 뢙이면 16μ§„μˆ˜λ‘œ ν•΄μ„ν•œλ‹€. 
   let x = 0xFF;  
   // jsμ—μ„œ    Oλ₯Ό 뢙이면 8μ§„μˆ˜λ‘œ ν•΄μ„ν•œλ‹€.
   let y = 07;
 
   let z = 10;
   console.log(   z.toString(2)  );  // "1010"
   console.log(   z.toString(8)  );  // "12"
   console.log(   z.toString(16)  );  // "a"

-숫자 객체- μ„±λŠ₯ X

    // var num = 123;                              // number
    var num = new Number(123);           // object               X    μ„±λŠ₯ λ–¨μ–΄μ§„λ‹€. 
    
    // Java
    //String name = "홍길동";
    //String name = new String("홍길동");

-64λΉ„νŠΈ 숫자-

   // js  숫자  : 64λΉ„νŠΈ
   let xx = BigInt(숫자);

js 숫자 ν•¨μˆ˜

 

    1. toString()                   7.toString()  "7"

   var n = 7 + "";    // "7"
   var m = 10;
   m.toString();      // "10"

    2. toExponential()          반올림되고 + μ§€μˆ˜ ν‘œκΈ°λ²• + "" λ¬Έμžμ—΄ λ³€ν™˜

   // toExponential()  반올림 + μ§€μˆ˜ν‘œν˜„ + λ¬Έμžμ—΄ λ°˜ν™˜.
   var n = 9.656;
   // 2,4,6 λ§€κ°œλ³€μˆ˜λŠ” μ†Œμˆ˜μ  λ’€μ˜ 문자의 수λ₯Ό μ •μ˜ν•œλ‹€. 
   // λ§€κ°œλ³€μˆ˜λ₯Ό μ§€μ •ν•˜μ§€ μ•ŠμœΌλ©΄ λ°˜μ˜¬λ¦Όν•˜μ§€ μ•ŠλŠ”λ‹€. 
   //console.log(   n.toExponential(2)  ); // 9.66e+0
   //console.log(   n.toExponential(4)  ); // 9.6560e+0
   //console.log(   n.toExponential(6)  ); // 9.656000e+0

    3. toFixed()                    반올림 + "" λ¬Έμžμ—΄ λ³€ν™˜

    console.log(  n.toFixed(0) );  // 10
    console.log(  n.toFixed(2) );  // 9.66      μ§€μˆ˜ν‘œν˜„ X
    console.log(  n.toFixed(4) );  // 9.6560  μ§€μˆ˜ν‘œν˜„ X
    console.log(  n.toFixed(6) ); // 9.656000

    4. toPrecision()               μ§€μ •λœ 길이둜 μž‘μ„±λœ 숫자둜 λ°˜ν™˜.

    console.log(  n.toPrecision() );   // 9.656
    console.log(  n.toPrecision(2) );  // 9.7
    console.log(  n.toPrecision(4) );  // 9.656
    console.log(  n.toPrecision(6) );  // 9.65600

    5. valueOf()                    X  숫자 λ³€ν™˜

    6. Number()

   // Number() λ©”μ„œλ“œ  :   js λ³€μˆ˜ -> 숫자 λ³€ν™˜
   //                                 숫자 λ³€ν™˜ν•  수 μ—†μœΌλ©΄ NaN λ°˜ν™˜.
   //                                   λ‚ μ§œλ₯Ό 숫자둜 λ³€ν™˜ν•  수 도 μžˆλ‹€. 
   console.log(    Number(true)  );   // boolean(true)  ->   1
   console.log(    Number(false)  );  //                 false ->  0
   
   console.log(    Number("10")  );  //                 "10" ->  10
   console.log(    Number("10.33")  );  //             "10.33" ->  10.33
      
   console.log(    Number("          10")  );  //             "          10" ->  10
   console.log(    Number("10          ")  );  //             "10          " ->  10
   
   console.log(    Number("admin")  );  // NaN
   
   console.log(    Number("10 33")  );  // NaN
   console.log(    Number("10,33")  );  // NaN
   
   //                                   λ‚ μ§œλ₯Ό 숫자둜 λ³€ν™˜ν•  수 도 μžˆλ‹€. 
   console.log(    Number("2022-01-22")  );  // NaN
   
   // 1970.1.1 이후   ms값을 λ°˜ν™˜
   console.log(    Number( new Date( "2022-01-22") ) );  // 1642809600000

    7. parseInt()

   // parseInt() λ©”μ„œλ“œ  :  λ¬Έμžμ—΄μ„ ꡬ문 λΆ„μ„ν•΄μ„œ       μ •μˆ˜ λ°˜ν™˜
   console.log( parseInt( "10"  )  );  // "10"     -> 10
   console.log( parseInt( "-10"  )  );  // "-10" -> -10
   console.log( parseInt( "10.33"  )  );  // "10.33" -> 10
   
   // Number()  NaN
   console.log( parseInt( "10 33"  )  );  // "10 33" -> 10
   console.log( parseInt( "10,33"  )  );  // "10,33" -> 10
   console.log( parseInt( "10abcde"  )  );  // "10adbcde" -> 10
   console.log( parseInt( "year 100"  )  );  // "year 100"-> NaN
   console.log( parseInt( "100 year"  )  );  // "year 100"-> 100

    8. parseFloat()

   // parseFloat() λ©”μ„œλ“œ  :  λ¬Έμžμ—΄μ„ ꡬ문 λΆ„μ„ν•΄μ„œ      숫자( μ •μˆ˜ , μ‹€μˆ˜ ) λ°˜ν™˜
   console.log( parseFloat( "10"  )  );  // "10"     -> 10
   console.log( parseFloat( "-10"  )  );  // "-10" -> -10
   console.log( parseFloat( "10.33"  )  );  // "10.33" -> 10.33
   
   // Number()  NaN
   console.log( parseFloat( "10 33"  )  );  // "10 33" -> 10
   console.log( parseFloat( "10,33"  )  );  // "10,33" -> 10
   console.log( parseFloat( "10abcde"  )  );  // "10adbcde" -> 10
   console.log( parseFloat( "year 100"  )  );  // "year 100"-> NaN
   console.log( parseFloat( "100 year"  )  );  // "year 100"-> 100

    9. isInteger()

    var n = 10;
    console.log(    Number.isInteger(  n )  );  // true
    n = 10.33;
    console.log(    Number.isInteger(  n )  );   // false

js λ°°μ—΄

  1. λ°°μ—΄ κ°œλ…

  2. λ°°μ—΄ μ‚¬μš© λͺ©μ 

  3. λ°°μ—΄ μ„ μ–Έ ν˜•μ‹ X

     

     [js]  첫 번째 방법

     var         cars = [];
     cars[0] = "BMW";
     cars[1] = "KIA";
     const  cars = [
                                  "BMW"
                                  , "KIA"
                                  , "Volvo"
                            ];

 

     [js]  두 번째 방법

     const cars = new Array();     
     const cars = new Array("BMW",  , "KIA"   , "Volvo");

-λ°°μ—΄μš”μ†Œ μ ‘κ·Ό-

     // int [] m = {1,3,5,4,2};
     // m[2]
     // m[2] = 100;
     
     const m = [1,3,5,4,2];
     
     // (1)   2번째 μš”μ†Œ... 
     // console.log(  m[2] );  // 5
     
     // (2)   2번째 μš”μ†Œμ˜ 값을 100으둜 λ³€κ²½
     m[2] = 100;
     console.log(  m[2] );  //  100
     
     // (3) λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œλ₯Ό 좜λ ₯.
     // console.log(  m );  // [1, 3, 100, 4, 2]
     
     // (4) λ°°μ—΄μ˜ νƒ€μž…
     //  jsμ—μ„œ 배열도 객체둜 μΈμ‹ν•œλ‹€. 
     console.log( typeof m );  // object
     
     // (5) μš”μ†Œ μΆ”κ°€ 55
     // λ°°μ—΄λͺ….length   == 배열크기
     m[m.length] = 55;
     m[m.length] = 65;
     m[m.length] = 75;
     console.log(  m ); 
     
     // (7) λ°°μ—΄ μ •λ ¬
     m.sort();
     console.log(  m );  // 1, 100, 2,3,4,5  λ¬Έμžμ—΄ μ˜€λ¦„μ°¨μˆœ μ •λ ¬
     
     // (8) λ§ˆμ§€λ§‰ μš”μ†Œ μ–»μ–΄μ˜€κΈ°.
     // m[m.length-1]
     
     // (9) λͺ¨λ“  λ°°μ—΄μ˜ μš”μ†Œ 좜λ ₯.
     for (var i = 0; i < m.length; i++) {
		console.log(  i +" : " +     m[i] );
	 }
     
     // (10)
     m[m.length] = "Benz";  // 문자
     m[m.length] = Date.now;  // λ‚ μ§œ
     m[m.length] = function (){ }; // ν•¨μˆ˜
     m[m.length] = [1,2,3];  // λ°°μ—΄

-λ°°μ—΄κ³Ό 객체 차이-

    const person = ["admin", 20];
    var name = person[0];
    var age = person[1];
    
    // js object
    const person = {
    		name:"admin" , 
    		age : 20
    };
    person.name;
    person["name"];

 

λ°°μ—΄ λ©”μ„œλ“œ

- κΈ°λŠ₯, 리턴값, λ§€κ°œλ³€μˆ˜ ( 3κ°€μ§€ )

 

-배열크기, foreach, push, isArray-

   var fruits = ["Banana", "Orange", "Apple", "Mango"];
   // console.log(  fruits.length );  // λ°°μ—΄ 크기  4
   
   /*  [1번]
   var text = "<ul>";
    for (var i = 0; i < fruits.length; i++) {
		text += "<li>" + fruits[i] + "</li>";
	}   // for
	text += "</ul>";
	*/
	
	// [2번]  Array.forEach()
	var text = "<ol>";
	fruits.forEach(function(elt, i, array) {
		// console.log(  elt + " / " + i + " / " + array)
		text += "<li>" + elt + "</li>";
	})
	text += "</ol>";
	
	$("#demo").html( text );
	
	// 1.  λ°°μ—΄ μš”μ†Œ μΆ”κ°€  :   push()
	// fruits[fruits.length] = "xxx";             X
	fruits.push("Lemon");
	
	// 2. νƒ€μž…μ΄ λ°°μ—΄ 확인 : ES5   Array.isArray()
	// console.log( typeof fruits );  // object
	// console.log(  Array.isArray( fruits ) );  // true
	
	// instanceof μ—°μ‚°μž.
	// console.log( " > " +   fruits  instanceof Array );  // true

-toString, join-

  // [ λ°°μ—΄ -> λ¬Έμžμ—΄ λ³€ν™˜        toString() ]  
  //  첫 번째.
  //   "Banana,Orange,Apple,Mango,Lemon" 
  // 각 μš”μ†Œκ°€ 콀마(μ‰Όν‘œ)둜 κ΅¬λΆ„λ˜μ–΄ λ¬Έμžμ—΄λ‘œ λ³€ν™˜.
  // console.log(   fruits.toString() );
  
  //  두 번째   - join()   ***
  //  "Banana - Orange - Apple - Mango - Lemon"      seperator (κ΅¬λΆ„μž)
  // console.log(  fruits.join(" - ") );
  
  // Banana</li><li>Orange</li><li>Apple</li><li>Mango</li><li>Lemon
  // console.log(  fruits.join("</li><li>") );
  
   var text = "<ol><li>";
	text += fruits.join("</li><li>");
	text += "</li></ol>";
	
	$("#demo").html( text );

-push, pop-

   // λ°°μ—΄μ˜ κ°€μž₯ λ§ˆμ§€λ§‰ μš”μ†Œμ— μƒˆλ‘œμš΄ μš”μ†Œλ₯Ό μΆ”κ°€ - 리턴값  λ°°μ—΄μ˜ 크기    push()
   console.log(  fruits.push("XXX") );  // 6
   console.log(  fruits.toString() );
   
   // λ°°μ—΄μ˜ κ°€μž₯ λ§ˆμ§€λ§‰ μš”μ†Œλ₯Ό μ–»μ–΄μ˜€κΈ°   - pop()           + κ°€μž₯ λ§ˆμ§€λ§‰ μš”μ†Œ 제거.
   // console.log(  fruits[fruits.length - 1] );
   console.log( fruits.pop() );
   console.log(  fruits.toString() );
   
   sort()
   shift()
   unshift()
   concat()
   splice()

-shift, delete- 

    var m = [3,5,2,4,1];
    console.log(  m.toString() );
    
    // [ shift() ]   >>     [<<1 ]   >>>          자리 이동
    // 첫 번째 μš”μ†ŒλŠ” 제거되고 λ‚˜λ¨Έμ§€ μš”μ†ŒλŠ” 인덱슀 -1    이동
    // 0[3] 1[5] ~  4[1]
    // 0[5] ~  3[1]
    // console.log(  m.shift() );   // 3  첫 번째 μš”μ†Œλ₯Ό λ°˜ν™˜
    
    
    
    // [ unshift() ]
    // m.push(100)  λ§ˆμ§€λ§‰ μš”μ†Œ μΆ”κ°€
    // m.unshift(100);  // 첫 번째 μš”μ†Œμ— μΆ”κ°€ + μš”μ†Œ λ’€λ‘œ 인덱슀 + 1  이동
    
    
    // λ°°μ—΄ μš”μ†Œ 제거(μ‚­μ œ)
    // shift()  첫 번째       μš”μ†Œ 제거
    // pop()    λ§ˆμ§€λ§‰ 번째 μš”μ†Œ 제거
    // m[1] = -1;   μ œκ±°ν–ˆλ‹€λŠ” 의미둜 νŠΉμ •κ°’μ„ μˆ˜μ •.
    
    // 3,   undefined  ,2,4,1
    // delete m[1];
    
    var n = [100,200,300];
    var s = [7,8,9];
    // 4. m λ°°μ—΄κ³Ό n 배열을 병합(μ—°κ²°)ν•΄μ„œ μƒˆλ‘œμš΄ 배열을 λ°˜ν™˜ :    concat()
    // 3,5,2,4,1,100,200,300
    var mns =  m.concat(n, s);
    
    // console.log(  mns.toString() );

-splice-

  // 3,5                         ,2,4,1
  //      2(100),3(200) 
  // 3,5,100,200,2,4,1
  // λ°°μ—΄μ˜ μƒˆ ν•­λͺ©μ„ μ‚½μž…
  // unshift() : 첫 μš”μ†Œ μΆ”κ°€
  // push()     : λ§ˆμ§€λ§‰ μš”μ†Œ μΆ”κ°€
  // splice()              쀑간 μš”μ†Œ  1개 이상 μΆ”κ°€(μ‚½μž…)
  // μŠ€ν”ŒλΌμ΄μŠ€() == 사전적인 의미 ( μž‡λ‹€ , 뢙이닀. )
   // pos  μ‚½μž… μœ„μΉ˜
   // amount  제거 μ–‘
   // newelt    μƒˆλ‘œμš΄ μš”μ†Œ
   m.splice(pos, amount, newelt)
  
  // 3,5,100,200,2,4,1
   m.splice(2, 0, 100, 200);
  
  //  3,5,2,4,1
  // 3,5,100,200,1
   m.splice(2, 2, 100, 200);
  
  //  3,5,[2,4],1    2번째 λΆ€ν„° 2개의 μš”μ†Œ 제거
  // 3,5,1
   m.splice(2, 2);
  
   console.log( m.toString() );

-slice, splice-

    console.log( m );
    
    // m.splice()    μž‡λ‹€.
    // m.slice()      쑰각내닀.       
    // var n = m.slice(1, 3); // 1 <=     < 3
    var n = m.slice(1); // 1 <=     to λ§ˆμ§€λ§‰ μš”μ†Œ
    console.log( n ) ;   // [5,2]

   sort() κΈ°λ³Έ asc

   reverse() μš”μ†Œ μˆœμ„œ λ°”κΎΈλŠ” ν•¨μˆ˜

   let fruits = ["Banana", "Orange", "Apple", "Mango"];
   
   // "Banana,Orange,Apple,Mango"
   console.log( fruits.toString() );
   // 1. λ°°μ—΄ μ •λ ¬ + asc
   // fruits.sort();
   
   // 2. λ°°μ—΄ μ •λ ¬ + desc
   // fruits.sort(function(a, b) {  })
   
   // λ°°μ—΄μ˜ μš”μ†Œλ₯Ό λ°˜λŒ€λ‘œ λ°”κΎΈλŠ” ν•¨μˆ˜
   // "Mango,Apple,Orange,Banana"
   // "Orange,Mango,Banana,Apple"  λ‚΄λ¦Όμ°¨μˆœ μ •λ ¬
   fruits.sort()
   fruits.reverse();
   
   // [A]pple,[B]anana,[M]ango,[O]range  μ˜€λ¦„μ°¨μˆœ μ •λ ¬
   console.log( fruits.toString() );
   // 숫자 λ°°μ—΄ μ„ μ–Έ
   var m = [3, 5, 10, 2, 4, 1 , 29];
   console.log( m.toString() ) ;  // 3,5,10,2,4,1,29
   
   // m.sort();  이유? 숫자λ₯Ό λ¬Έμžμ—΄λ‘œ μ •λ ¬..
   //  1,2,3,4,5,10,29		     μ˜€λ¦„μ°¨μˆœ
   /*
   m.sort(function(a, b) {
   	  // return a - b;   // μ–‘μˆ˜,  음수 , 0   μ˜€λ¦„μ°¨μˆœ
   	  return b - a;  // λ‚΄λ¦Όμ°¨μˆœ
   });
   */
   
   // λžŒλ‹€μ‹
   m.sort(  (a, b) => a-b  );
   
   console.log( m.toString() ) ;  // "1","10","2","29","3","4","5"

-λ°°μ—΄ μ„žκΈ°(Math.random)

   // λ¬΄μž‘μœ„λ‘œ λ°°μ—΄ μ„žκΈ°.
   // js       0.0 <=    Math.random() μ‹€μˆ˜  < 1
   m.sort(  () => 0.5 - Math.random()  );
   console.log( m.toString() ) ;

- js : Math 객체 + random() λ©”μ„œλ“œ

   var max =  Math.max(...m)  ;  // 29
   
   // [ apply() ν•¨μˆ˜  ? ]  call() λΉ„κ΅ν•΄μ„œ μ„€λͺ…...
   max = Math.max.apply(null, m); // 29
   console.log( max );
   
   var min = Math.min(...m)  ;  // 1
   min = Math.min.apply(null, m); 
   console.log( min );

-객체 λ°°μ—΄-

   // 객체 λ°°μ—΄ μ„ μ–Έ
   var persons = [  
	                      {name:"홍길동", age:20}, 
	                      {name:"λ°•μ˜ˆλ¦°",age:25}, 
	                      {name:"이예인",age:18} 
	                 ];
   
   // 1. λ‚˜μ΄ 순으둜 μ˜€λ¦„μ°¨μˆœ μ •λ ¬ν•΄μ„œ 좜λ ₯.
   //console.log(   persons[0].age   );
   //console.log(   persons[0]["age"]   );
   
   persons.sort(function( o1, o2) {
   	   return o1.age - o2.age;
   })
   
   // console.log( persons.toString() );
   // console.log( persons );
   
   // 2. μ΄λ¦„μˆœμœΌλ‘œ μ˜€λ¦„μ°¨μˆœ μ •λ ¬..
   console.log("===2===");
   
   
   //console.log(    "이예인" - "홍길동"  );  // NaN
   //console.log(    "이예인" > "홍길동"  );  // false
   //console.log(   Number(  "이예인" > "홍길동" ) );  // false
   
    persons.sort(function( o1, o2) {
       if( o1.name > o2.name ) return 1;
       else if( o1.name < o2.name ) return -1;
       else 0;
   })
   
   console.log( persons );

λ°°μ—΄ λ©”μ„œλ“œ

  1. forEach()

     λ°°μ—΄μ˜ 각 μš”μ†Œ λ§ˆλ‹€  ν•œ λ²ˆμ”© ν•¨μˆ˜λ₯Ό ν˜ΈμΆœν•΄μ„œ 반볡 처리.

     

  2. map()

     λ°°μ—΄μ˜ 각 μš”μ†Œμ— ν•¨μˆ˜λ₯Ό μ‹€ν–‰ν•˜μ—¬ μƒˆλ‘œμš΄ 배열을 μƒμ„±ν•˜λŠ” ν•¨μˆ˜   

  

  3. filter()

      ν•„ν„°λ§λœ μš”μ†Œλ§Œμ„ κ°–λŠ” μƒˆλ‘œμš΄ 배열을 μƒμ„±ν•˜λŠ” ν•¨μˆ˜   

      

  4. reduce()

       λ°°μ—΄μ˜ 각 μš”μ†Œλ₯Ό μ‹€ν–‰ν•˜λŠ” ν•¨μˆ˜μ—μ„œ 단일 값을 μƒμ„±ν•˜λŠ” ν•¨μˆ˜    

       

   5. every()

       λ°°μ—΄μ˜ λͺ¨λ“  μš”μ†Œκ°€ ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•˜λŠ”μ§€ μ—¬λΆ€ ν™•μΈν•˜λŠ” ν•¨μˆ˜    

       

   6. some()

       λ°°μ—΄μ˜ 일뢀 μš”μ†ŒλΌλ„ ν…ŒμŠ€νŠΈλ₯Ό ν†΅κ³Όν•˜λ©΄ true/false λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜    

       

   7. indexOf()    / lastIndexOf()

       λ°°μ—΄μ—μ„œ μš”μ†Œμ˜ 값을 κ²€μƒ‰ν•˜κ³  κ²€μƒ‰ν•œ μš”μ†Œμ˜ μΈλ±μŠ€κ°’μ„ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜  ( - 1 )

       

   8.  find()  / findIndex()

        μš”μ†Œκ°’      μš”μ†Œ 인덱슀

        5                 1

        var m = [3,5,2,4,1];

        첫 번째 5보닀 κ°™κ±°λ‚˜ 큰 수λ₯Ό μ°Ύκ³  μ‹Άλ‹€.

        

        var num = m.find( function (elt, i, array){

           return elt >=5;

        } )

     

     9. from()     

             길이(length) 속성이 μžˆλŠ” 객체 λ˜λŠ” 반볡 κ°€λŠ₯ν•œ κ°μ²΄μ—μ„œ -> λ°°μ—΄ λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜

             λ¬Έμžμ—΄

             λ°°μ—΄

             λ“±λ“±   

             

      10. keys() 

          λ°°μ—΄μ˜ ν‚€(μΈλ±μŠ€κ°’)κ°€ μžˆλŠ” iterator 객체λ₯Ό  λ°˜ν™˜ν•˜λŠ” ν•¨μˆ˜

          

          entries()    key                        +   value ν•œμŒ

                        λ°°μ—΄μ˜ μΈλ±μŠ€κ°’                μš”μ†Œμ˜ κ°’

                        [ 0 , 3 ]

<script>
   var m = [3,5,2,4,1];
   // var ir = m.keys();
   var ir = m.entries();  // μ—”νŠΈλ¦¬ = key + value  ν•œμŒ
   
   for (let n of ir) {  // index   0/1/2/3/4   μΈλ±μŠ€κ°’ 
	console.log( n[1] );
  }
   
   /* JAVA
   while( ir.hasNext()){
	    int n = ir.next();
   }
   */
	   
</script>


<script>
        /*
        var str = "μ•ˆλ…•ν•˜μ„Έμš”.";
        // console.log( str.length );  // 6
        var arr =  Array.from( str );
        console.log( typeof arr);  // object
        console.log( arr.toString()  );  // "μ•ˆ,λ…•,ν•˜,μ„Έ,μš”,."
        */
</script>

<script>
   /*
   var m = [3,5,2,4,1];
   // 1. forEach()
   m.forEach(function(elt, i, array) {
          console.log( elt + " / " +  i ); 	
    });
   */
</script>

<script>
    /*
    // 2. map()
    var m = [3,5,2,4,1];
    console.log( m.toString() );            // 3,5,2,4,1
    
    // 각 μš”μ†Œμ˜ 값을  2λ₯Ό κ³±ν•΄μ„œ μƒˆλ‘œμš΄ λ°°μ—΄ 생성.
  
    var newm = [];
    for (var i = 0; i < m.length; i++) {
    	newm.push(    m[i] * 2 );
	}; 
 
	
	// map() μ‚¬μš©
	var newm = m.map(function(elt, i, array) {
		return elt *3 ;
	});
	
	console.log(   newm.toString() );  // 9,15,6,12,3
	*/
</script>

<script>
   /*
   // 3. filter()
   var m = [];
   for (var i = 0; i < 10; i++) {
	    m.push(   parseInt(  Math.random() * 100 )  );
  }
   console.log( m.toString() );
   
   // 50보닀 큰 값을 -> μƒˆλ‘œμš΄ λ°°μ—΄ 생성
 
   var newm = [];
   m.forEach(function(elt, i, array) {
   	     if(  elt >= 50  )   newm.push( elt );
   })
   console.log( newm.toString() );
 
   
   var newm = m.filter(function(elt, i, array) {
   	   return elt >= 50 ;
   });
   console.log( newm.toString() );
   */
</script>

<script>
    /*
   // 4. reduce()
   var m = [3,5,2,4,1];
   
   // λ°°μ—΄μ˜ 총합을 κ΅¬ν•΄μ„œ 좜λ ₯.
 
   var sum = 0;
   
   for (var i = 0; i < m.length; i++) {
	  sum += m[i];
	  console.log(  m[i] +"+" )
  }
   console.log( sum );
 
   
   // m.reduceRight( )               였λ₯Έμͺ½ -> μ™Όμͺ½
   var sum = m.reduce(function(sum, elt, i, array) {
   	   return sum + elt;
   } )
    console.log( sum );  // 115
    */
</script>

<script>
   // μ •λ³΄μ²˜λ¦¬κΈ°μ‚¬ μ‹œν—˜
   var m = [78, 60, 35, 89, 76];
   // 과락. 체크
   /*
   for (var i = 0; i < m.length; i++) {
	   if(  m[i]  < 40 ){  // 40 미만 
		    console.log("과락")
	   }
  }
   */
   
  var result =   m.every(function(elt, i, array) {
   	   return elt >=40 ;
   })
   
   console.log( result  ); // false

</script>

arguments μ»¬λ ‰μ…˜,  js λ‚ μ§œ

 [  js  λ‚ μ§œ 객체 :  Date ]

 1. μƒˆλ‘œμš΄ λ‚ μ§œ 객체λ₯Ό μƒμ„±ν•˜λŠ” 4κ°€μ§€ 방법

    (1)  new Date() :  ν˜„μž¬ μ‹œμŠ€ν…œμ˜ λ‚ μ§œ + μ‹œκ°„.

    (2)  new Date(y, m, d, h, m, s, ms)

    (3)  new Date( ms )                  1970.1.1 00:00:00.000

    (4)  new Date( string date )

  //  [  js  λ‚ μ§œ 객체 :  Date ]
  //  (1)  new Date() :  ν˜„μž¬ μ‹œμŠ€ν…œμ˜ λ‚ μ§œ + μ‹œκ°„.
      var now = new Date();
      // Wed Nov 23 2022 16:12:30 GMT+0900 (ν•œκ΅­ ν‘œμ€€μ‹œ)
      $("#demo").html(  now  );
  
  //  (2)  new Date(y, m, d, h, m, s, ms)
        // var d = new Date(2018 , 11-1, 23);  // 11μ›”
        var d = new Date(2018 , 11-1 );          // λ‚ μ§œ μƒλž΅    1일
        $("#demo").html( d   );
      
  //  (3)  new Date( ms )                  1970.1.1 00:00:00.000
       var ms =   Number(new Date());
       // console.log( ms );   1669187859080
       var d = new Date( ms );
       
       // Wed Nov 23 2022 16:18:18 GMT+0900 (ν•œκ΅­ ν‘œμ€€μ‹œ)
       $("#demo").html( d   );
  
  //  (4)  new Date( string date )
       Sun Nov 25 2018 09:00:00 GMT+0900 (ν•œκ΅­ ν‘œμ€€μ‹œ)
       var d = new Date("2018-11-25");
       var d = new Date("2018-11");  // 1일
       var d = new Date("2018");  // 1μ›” 1일
       $("#demo").html( d   );
       
       // GMT  == κ·Έλ¦¬λ‹ˆμΉ˜ ν‘œμ€€μ‹œ
       // UTC   == ν˜‘μ • μ„Έκ³„μ‹œ
  
        // MM/DD/YYYY
        // Wed Mar 25 2015 00:00:00 GMT+0900 (ν•œκ΅­ ν‘œμ€€μ‹œ)
       var d = new Date("03/25/2015");       
       var d = Date.parse("03/25/2015");
       
       d.toString() ; //   λ‚ μ§œ -> λ¬Έμžμ—΄ λ³€ν™˜
       
       $("#demo").html( d.toDateString()   );  // "Wed Mar 25 2015"
       $("#demo").html( d.toUTCString()  );  // "Tue, 24 Mar 2015 15:00:00 GMT"
       $("#demo").html( d.toISOString()  );  // "2015-03-24T15:00:00.000Z"
       $("#demo").html( d.toLocaleDateString() );  // 2015. 3. 25.
       $("#demo").html( d.toLocaleTimeString() );  // μ˜€μ „ 12:00:00
  function sum(a, b, c){
	  console.log(" >> sum(3) ... " );
  }

  function sum(){
	   // forms μ»¬λ ‰μ…˜
	   // options μ»¬λ ‰μ…˜
	   // arguments μ»¬λ ‰μ…˜ : 인자(λ§€κ°œλ³€μˆ˜) μ»¬λ ‰μ…˜ 객체
	   // λ“±λ“±  links, images μ»¬λ ‰μ…˜ ... ~ 
	   
	   // console.log(  arguments.length );
        var result = 0;
        for (var i = 0; i < arguments.length; i++) {
			result += arguments[i];
		}
	   return result;
   } 

  
  // sum();
  console.log(  sum(1, 2)  );              // 3
  console.log(  sum(1, 2, 3) );           // 6
  console.log(  sum(1, 2, 3, 4)  );      // 10
<script>
    var now = new Date();
   // 년도
   console.log(  now.getFullYear() );  // 2022
   // μ›”
   console.log( now.getMonth() + 1 );      // 11
   // 일
   console.log( now.getDate() );      // 23
   // μ‹œ
    console.log( now.getHours() );    // 16
   // λΆ„
   console.log( now.getMinutes() );    // 16
   // 초
   console.log( now.getSeconds() );    // 16
   // λ°€λ¦¬μ„Έμ»¨λ“œ
   console.log( now.getMilliseconds() );    // 16
   // μš”μΌ
   console.log(  "μΌμ›”ν™”μˆ˜λͺ©κΈˆν† ".charAt( now.getDay()  ) );    //   일(0) 1(μ›”)  2(ν™”) 3(μˆ˜μš”μΌ)    ~    6(ν† )

   
   // λ‚ μ§œ μ„€μ •
   /* 
   now.setFullYear(year);
   now.setMonth(month)  // 1 달
   now.setDate(date);
   now.setHours(hour);
   now.setXXX();  
   */   
    
</script>

<script>
      //  getTime() :  1669188846578  ( 1970.1.1 00:00:00.000 )
     var ms =  now.getTime();
     alert( ms );
</script>

html - 배경색 λ³€κ²½

<select   onchange="bc_change(  this  );">
   <option>μ„ νƒν•˜μ„Έμš”.</option>
   <option value="white">흰색</option>
   <option value="red">λΉ¨κ°•</option>
   <option value="green">녹색</option>
   <option value="blue">νŒŒλž‘μƒ‰</option>
</select>
   function bc_change(  selTag ){
	   /* 
	  // document.querySelector("select");
	   var idx =  selTag.selectedIndex;  // 0 ~ 4
	   var op = selTag.options[idx];
	   var text =  op.text;
	   var value =  op.value;
	   */
	   
	   // alert(  selTag.value );    == $("select").val()
	   document.bgColor =   selTag.value;
   }
<script>
    var colors = ["white", "red", "green" , "blue"];

    var  $sel =  $("<select></select>");
    
    colors.forEach(function(elt, i, array) {
    	$sel.append(   $("<option>"+ elt +"</option>")  )
    });
    
    $sel.change(function() {
    	document.bgColor = $(this).val();
    	// $(this option:selected).val()
    });
    
    $sel.appendTo( $("body") );
  
</script>