본문으로 바로가기

jQuery
$.extend(): 객체 합치기, 깊은복사, 얕은복사
replaceWith(html): DOM객체 대체

키워드: 비동기, method chain

I. JavaScript Object 다루기

1) typeof val
A. typeof val == 'object'
- 배열도 여기 속함
- 정확하게 배열인지 체크하려면 jQuery의 [$.isArray(val) == true]로 먼저 식별 사용
B. typeof val == 'string'
C. typeof val == 'number'
D. typeof val == 'boolean' (true, false)
E. typeof val == 'function'

http://www.w3schools.com/jsref/jsref_type_conversion.asp

2) 선언/생성/삭제
var a = {};
var a = new Object();
var a = {code:1, name:'TEXT'};
delete a.code; 또는 delete a['code'];
a = {}; // 초기화

3) 검색
// @param objectList : 찾을 대상 객체
// @param keyArray, valArray: 조건key/value 배열(and)
function findObject(objectList, keyArray, valArray) {
return _.find(objectList, function(obj, idx) {
for (var i = 0 ; i < keyArray.length ; i++) {
if (obj[keyArray[i]] == valArray[i]) {
return true;
}
}
return false;
});
}

// 객체의 모든 key,value 표시

var dataItem = {text:"hahah", value:"1", comment: "comt"};

for (var key in dataItem) {

console.log(key + ", " + dataItem[key]);

}

▼ 기타 유틸
Key값을 변경하는 함수 예: renameKeys() :- https://gist.github.com/diasdavid/f8997fb0bdf4dc1c3543#file-renamekeys-js

II. JavaScript Function 다루기

1) 모든 함수의 arguments 보기

function XXX() {

  console.log(JSON.stringify(arguments);

}

2) callback function

참고: https://developer.mozilla.org/ko/docs/Web/JavaScript/Reference/Global_Objects/Function/apply

III. regular exp.

1) 숫자만 남기기
var str1 = '1R-2S-30P';
var str2 = str1.replace(/[^0-9]/g, ''); // str2▶ 123

var str3 = str1.replace(/[^0-9/-]/g, ''); // str3▶ 1-2-3
var str4 = str3.split('-'); // str4▶ ["1", "2", "3"]
console.log(str4[0]+'R-'+str4[1]+'S-'+'str4[2]+'P');

VI. 브라우저 정보 알아내기

규격을 지키지 않는 IE때문에 경우의 수가 많음.

// 아래 방식은 IE11까지만 알수있음 (IE12는 어찌될지 모름.) var agent = navigator.userAgent.toLowerCase(); if ( (navigator.appName == 'Netscape' && navigator.userAgent.search('Trident') != -1) || (agent.indexOf("msie") != -1) ) { alert("인터넷 익스플로러 브라우저 입니다."); } else { alert("인터넷 익스플로러 브라우저가 아닙니다."); }
간단버전: http://ooz.co.kr/67
IE인경우 버전정보까지: http://foodchain.tistory.com/28

(2017/02/13)
ExcelWorker.import한 엑셀값 중 '셀서식=날짜'인 경우 number가 넘어온다.
이걸 날짜로 변경하려면?
var inValue = 38743; // 2016-01-26
var dd = new Date(Math.round((inValue - 25569)*86400*1000))
//var uct_days = 25569; //1970-01-01
//var uct_seconds = uct_days * 86400; // 86400=24*60*60
출처: http://stackoverflow.com/questions/16229494/converting-excel-date-serial-number-to-date-using-javascript/16233621
구글검색어: javascript 엑셀 날짜 셀서식 숫자
더생각해보기: TimeZone

(2017.02.15)
의문: $.each 안에서 continue, break넣으면 에러라더라!!
검색어: $.each continue break
방법:
$('#loop').each ( function() {
if ( i==0 ) return true; // continue;
else return false; // break;
} );

(2017.02.15)
오류메시지: Uncaught TypeError: Converting circular structure to JSON
원인 : object를 JSON.stringify()시 내부 데이터 순환 참조(?)가 있음을 의미
참고: http://ohgyun.com/399

(2017.02.16) 추후 살펴보고 테스트해볼것!
키워드: javascript method chaining (또 다른 체인, Promise chain!?)
http://blog.saltfactory.net/javascript-method-chaining-pattern/

(2017.02.16) 추후 살펴보자! - jQuery always vs. done vs. fail vs. then
참고: https://codeplanet.io/jquery-always-done-fail-then/ (2015.07)
의문&테스트결과: done,fail,always,then실행 순서는? console.log()로 찍어보니 [done or then → always → then] 더라~!
또 다른 의문: 다른 환경에서는 다를지도?

 

// (2023.03.11)
// 객체 리스트(List<Map<String, Object>>)에서 특정 값의 최대값 구하기
const max = data.reduce(function(prev, current) {
    return (prev.y > current.y) ? prev : current
}); //returns object
or
const max = data.reduce((prev, current) { => return (prev.y > current.y) ? prev : current});
var minNo = Math.min(...$.extend(true, [], dataList.map(d => d.No));

// 객체배열 Deep Copy using jQuery.extend
var newArrList = $.extend(true, [], oldArrList);
반응형

'Script Language' 카테고리의 다른 글

React.js, 2024  (0) 2024.05.10
Python summary - 2023.05  (0) 2023.05.10
[JavaScript] 정규식 regexp 사용 기록  (0) 2017.07.09