ABOUT ME

-

Today
-
Yesterday
-
Total
-
  • 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 함수뒤에 .으로 연결해서 사용 가능하다.

    반응형

    댓글

Designed by Tistory.