// 데이터 정의
erpData = 사업자번호, 관리번호, 금액
comData = 사업자번호, 관리번호, 등록번호, 금액
문제1. erpData와 comData의 관리번호 비교를 통해 둘 중 한곳에만 있는 데이터를 추출
=> 두 자료간 대칭 차집합
샘플데이터 확인은 더보기!
붉은색으로 표시한 데이터가 추출되어야할 데이터.
const erpData = [
["1222860054", "20240517410000260590srrs", "143,000"],
["1180212155", "20240517410000260590srrt", "571,500"],
["1371513607", "20240521410000260590siwq", "111,200"],
["1048101300", "20240521410000260590siwr", "169,800"],
["1318160204", "20240521410000260590siws", "211,300"],
["1301313029", "20240521410000260590siwt", "111,200"],
["1378172843", "20240522410000260590sj3g", "58,500"],
["1218107309", "20240522410000260590sj3h", "276,500"],
["1390761167", "20240522410000260590sj3i", "694,800"],
["1398112365", "20240522410000260590sj3j", "1,023,600"],
["2138175580", "20240523410000260590sj3k", "984,000"],
["1048104326", "20240523410000260590sj3l", "542,100"],
["3201301956", "20240523410000260590sj3m", "694,800"],
["5451000254", "20240523410000260590sqys", "47,500"],
["1378170530", "20240524410000260590srrm", "164,500"],
["1400700118", "20240526410000260590srqv", "396,100"],
["7598700097", "20240527410000260590srqw", "111,200"],
["1228112275", "20240528410000260590srru", "173,700"],
["6033961257", "20240528410000260590srsj", "347,400"],
["6033961257", "20240529410000260590srw2", "572,000"],
["1304687908", "20240529410000260590srwe", "95,000"],
["1013370845", "20240530410000260590srw3", "286,000"],
["1378107814", "20240530410000260590srw4", "143,000"],
["1348108925", "20240530410000260590srw5", "422,600"],
["1348108925", "20240531410000260590srwf", "614,600"]
];
const comData = [
["1222860054", "20240517410000260590srrs", "131-82-02536", "143,000"],
["1180212155", "20240517410000260590srrt", "131-82-02536", "571,500"],
["1371513607", "20240521410000260590siwq", "131-82-02536", "111,200"],
["1048101300", "20240521410000260590siwr", "131-82-02536", "169,800"],
["1318160204", "20240521410000260590siws", "131-82-02536", "211,300"],
["1301313029", "20240521410000260590siwt", "131-82-02536", "111,200"],
["1378172843", "20240522410000260590sj3g", "131-82-02536", "58,500"],
["1218107309", "20240522410000260590sj3h", "131-82-02536", "276,500"],
["1390761167", "20240522410000260590sj3i", "131-82-02536", "694,800"],
["1398112365", "20240522410000260590sj3j", "131-82-02536", "1,023,600"],
["2138175580", "20240523410000260590sj3k", "131-82-02536", "984,000"],
["1048104326", "20240523410000260590sj3l", "131-82-02536", "542,100"],
["3201301956", "20240523410000260590sj3m", "131-82-02536", "694,800"],
["5451000254", "20240523410000260590sqys", "131-82-02536", "47,500"],
["1378170530", "20240524410000260590srrm", "131-82-02536", "164,500"],
["1400700118", "20240526410000260590srqv", "131-82-02536", "396,100"],
["7598700097", "20240527410000260590srqw", "131-82-02536", "111,200"],
["1228112275", "20240528410000260590srru", "131-82-02536", "173,700"],
["6033961257", "20240528410000260590srsj", "131-82-02536", "347,400"],
["6033961257", "20240529410000260590srw2", "131-82-02536", "572,000"],
["1304687908", "20240529410000260590srwe", "131-82-02536", "95,000"],
["1013370845", "20240530410000260590srw3", "131-82-02536", "286,000"],
["1378107814", "20240530410000260590srw4", "131-82-02536", "143,000"],
["1348108925", "20240530410000260590srw5", "131-82-02536", "422,600"],
["1348108925", "20240531410000260590srwf", "131-82-02536", "614,600"],
["1318202536","20240517410000260590sj3v", "122-28-60054", "-571,500"],
["1318202536","20240517410000260590sj3u", "118-02-12155", "-143,000"]
];
1.관리번호로만 이루어진 set 생성
const erpSet = new Set(erpData.map(record => record[1]));
const comSet = new Set(comData.map(record => record[1]));
2. 대칭차집합 계산 : 관리번호가 있는지 확인 후 없는 경우만 필터
const onlyInErp = [...erpSet].filter(id => !comSet.has(id));
const onlyInCom = [...comSet].filter(id => !erpSet.has(id));
3. 대칭차집합에 해당하는 레코드 추출
const erpOnlyRecords = erpData.filter(record => onlyInErp.includes(record[1]));
const comOnlyRecords = htxData.filter(record => onlyInCom.includes(record[1]));
문제2. 추출된 데이터를 하나의 결과파일에 작성.
결과파일의 필드: 관리번호, 사업자번호, 빈 칸, 금액, 데이터 출처
* 데이터 출처는 erpData 일 경우 'erp', comData 일 경우 'com' 으로 표기
//결과를 담을 배열 정의
const resData = [];
// erpData에만 있는 레코드 추가 (출처 'erp')
erpOnlyRecords.forEach(record => resData.push([...record, 'erp']));
// comData에만 있는 레코드 추가 (출처 'com')
comOnlyRecords.forEach(record => resData.push([record[1], record[0], "", record[3], 'com']));
// 결과 출력
console.log(resData);
//결과
[
["20240517410000260590sj3v", "1318202536", "", "-571,500", "com"],
["20240517410000260590sj3u", "1318202536", "", "-143,000", "com"]
]
'🚀 Programming > RPA_JavaScript+C#' 카테고리의 다른 글
[JavaScript] 2차원 배열 변형하기(map, filter, set) (1) | 2024.11.15 |
---|---|
[JavaScript] 스프레드 연산자 "..." (0) | 2024.11.03 |