-
javascript 자바스크립트 map, reduce, filter, find, every 응용하기JavaScript 2020. 10. 10. 18:17반응형
/*json Array 중복 값 찾기*/
let _jsonArray = [{“name” : “aa”, “id”: “aa” },{“name” : “bb”, “id”: “bb” },{“name” : “cc”, “id”: “aa” },{“name” : “dd”, “id”: “dd” },{“name” : “ee”, “id”: “ee” }]; let _result = _jsonArray.reduce(function(obj,key){ if(!obj[key.id]){ obj[key.id] = 0; } obj[key.id] += 1; if(obj[key.id == 2){ alert(“중복된 데이터가 있습니다.”); return false; } return obj; }, {});
/*배열내 특정 키 값의 중복값 구하기 */
let dataList = [ { "proName":"다낭여행", "proCd":"DN1", "reseCnt":"1" }, { "proName":"다낭여행1", "proCd":"DN2", "reseCnt":"4" }, { "proName":"다낭여행2", "proCd":"DN3", "reseCnt":"1" }, { "proName":"다낭여행3", "proCd":"DN4", "reseCnt":"5" }, { "proName":"다낭여행4", "proCd":"DN5", "reseCnt":"5" }, { "proName":"다낭여행5", "proCd":"DN6", "reseCnt":"0" }, { "proName":"다낭여행", "proCd":"DN7", "reseCnt":"1" }, { "proName":"다낭여행9", "proCd":"DN8","reseCnt":"10" } ] let totCnt; //초기값을 0으로 해야 숫자로 인식 totCnt = dataList.reduce((acc,cur,i)=>{ console.log("누적된 값 :"+acc+" ","| 누적할 값 : "+cur.reseCnt+"| 순번 :"+i); return acc+Number(cur.reseCnt); },0); //결과 27 console.log(totCnt);
/*배열값 중복 개수 구하기*/
const votes = ['엄마', '아빠', '아빠', '아빠', '엄마','엄빠', '아마', '아마', '엄빠', '엄마', '아빠', '딸', '아들']; //reduce((누산값, 현재요소값, 현재요소의index, 현재배열) const result2 = votes.reduce((acc, el, i) => { console.log(`${i}번째 콜백함수`) console.log(`acc:`, acc); console.log(`el:`, el); acc[el] = (acc[el] || 0) + 1; return acc; }, {}); console.log('---------------') console.log('result2:', result2); //결과 {딸: 1, 아들:1, 아마:2, 아빠:4, 엄마:3, 엄빠:2}
/*비교 대상 아이디랑 같은것의 이름을 가져오기*/
let _jsonArray = [{“name” : “aa”, “id”: “aa” },{“name” : “bb”, “id”: “bb” },{“name” : “cc”, “id”: “aa” },{“name” : “dd”, “id”: “dd” },{“name” : “ee”, “id”: “ee” }]; let _id = “dd”; let id = _jsonArray.find(function(v){ return v.id == _id }).name; //결과 “dd”
/* 1배열에서 2배열의 값 빼기 */
let _jsonArray1 = [{“name” : “aa”, “id”: “aa” },{“name” : “bb”, “id”: “bb” },{“name” : “cc”, “id”: “aa” },{“name” : “dd”, “id”: “dd” },{“name” : “ee”, “id”: “ee” }]; let _jsonArray2 = [{“name” : “aa”, “id”: “aa” },{“name” : “dd”, “id”: “dd” },{“name” : “ee”, “id”: “ee” }]; let result = _jsonArray1.filter(function(el1){ return _jsonArray2.every(function(el2){ return el1.name !== el2.name; }); }) //result = [{“name” : “bb”, “id”: “bb” },{“name” : “cc”, “id”: “aa” }]
/* 기존 배열을 새로운 배열로 만들기 */
let _jsonArray = [ {“name” : “aa”, “id”: “aa”, "class" : "A"} ,{“name” : “bb”, “id”: “bb”, "class" : "B"} ,{“name” : “cc”, “id”: “aa”, "class" : "C"} ,{“name” : “dd”, “id”: “dd”, "class" : "D"} ,{“name” : “ee”, “id”: “ee”, "class" : "E"} ]; _jsonArray = _jsonArray.map(function(v){ return {'new_name' : v.name, 'new_id' : v.id } }
/* jsonObject를 배열로 만들어서 n개로 나눈 2차원 배열 만들기 */
var obj = { "regNm": "관리자", "regDt": "20211016", "fileNm1": "첫번째파일", "fileSize1": "100", "filePath1": "C/Workspace", "fileNm2": "두번째파일", "fileSiz2": "200", "filePath2": "C/Workspace", "fileNm3": "세번째파일", "fileSize3": "300", "filePath3": "C/Workspace" }; delete obj.regNm; delete obj.regDt; var result = []; var resultMap = Object.keys(obj).map(function (key){ var rObj = {}; rObj[key] = obj[key]; return rObj }); var result2 = []; for(i=0; i<resultMap.length; i+=3){ result2.push(resultMap.slice(i, i+3)); } console.log(result2)
/*기존 배열을 새로운 변수에 복사하기*/
let afterArray = JSON.parse(JSON.stringify(boforeArray));
/*해당 키 기준으로 배열의 중복을 제거하고 유일한 배열로 만들기*/
let _jsonArray = [ {“name” : “aa”, “id”: “aa”, "class" : "A"} ,{“name” : “aa”, “id”: “aa”, "class" : "B"} ,{“name” : “cc”, “id”: “cc”, "class" : "C"} ,{“name” : “dd”, “id”: “dd”, "class" : "D"} ,{“name” : “dd”, “id”: “ee”, "class" : "E"} ]; //name이랑 id가 같은것들을 중복 제거하기 _jsonArray = _jsonArray.filter(function v, i, s){ return i === s.findIndex(function(t){ return t.name === v.name && t.id === v.id; // &&로 조건 추가 가능 }); }); // 결과 {“name” : “aa”, “id”: “aa”, "class" : "B"} ,{“name” : “cc”, “id”: “cc”, "class" : "C"} ,{“name” : “dd”, “id”: “ee”, "class" : "E"}
filter , find , map 함수뒤에 .으로 연결해서 사용 가능하다.
반응형'JavaScript' 카테고리의 다른 글
javascript 자바스크립트 var app = app || {} 의미 (0) 2021.09.20 javascript evnet?? 자바스크립트 이벤트란?? (0) 2021.09.11 e.preventDefault() , e.stopPropagation()란? (0) 2020.08.14 innerHTML와 outerHTML 차이 (0) 2020.05.10 JSON.stringify 과 JSON.parse 차이점 (0) 2020.03.09