🚀 Programming/JavaScript+C#

[JavaScript] 2차원 배열 데이터 최소값, 최대값, 정렬

jishushu 2025. 2. 24. 10:35
728x90
반응형
// 테스트용 데이터 cars
const cars = [
    ["아우디 A6 (C8) 40 TDI 콰트로 프리미엄", 4090, "경기", "81937km"],
    ["아우디 Q3 (F3) 35 TDI 스포트백", 3950, "경기", "13285km"],
    ["아우디 A6 (C8) 45 TFSI 프리미엄", 4800, "경기", "20794km"],
    ["포르쉐 카이엔 (PO536) 3.0", 17500, "경기", "4647km"],
    ["포르쉐 타이칸 GTS", 17700, "경기", "5214km"],
    ["포르쉐 718 카이맨 4.0 GT4", 40, "경기", "25km"],
    ["포르쉐 카이엔 (PO536) 3.0", 18500, "부산", "15km"],
    ["포르쉐 911 (992) 카레라 GTS 카브리올레", 22990, "광주", "6022km"],
    ["미니 쿠퍼 S 클래식 3세대", 3120, "부산", "30964km"],
    ["미니 쿠퍼 클래식 플러스 3세대", 2680, "부산", "9329km"],
    ["미니 쿠퍼 클럽맨 클래식 플러스 라이트 2세대", 3070, "대전", "8206km"],
    ["미니 쿠퍼 S 클럽맨 멀티톤 에디션 2세대", 3390, "경기", "14539km"],
    ["미니 쿠퍼 S 클래식 3세대", 3250, "광주", "3474km"]
];

 

1. 최소값, 최대값 구하기

function findMaxMinRows(data) {
    let maxPriceRow = data[0];	//최고가
    let minPriceRow = data[0];	//최저가
    let maxMileageRow = data[0];	//최장 주행거리
    let minMileageRow = data[0];	//최단 주행거리

    data.forEach(row => {
        if (row[1] > maxPriceRow[1]) maxPriceRow = row;
        if (row[1] < minPriceRow[1]) minPriceRow = row;
        if (row[3].replace(/\D/g,'') > maxMileageRow[3].replace(/\D/g,'')) maxMileageRow = row;    //정규식; 단위 제거 
        if (row[3].replace(/\D/g,'') < minMileageRow[3].replace(/\D/g,'')) minMileageRow = row;
    });

    return {
        maxPriceRow,
        minPriceRow,
        maxMileageRow,
        minMileageRow
    };
}

const result = findMaxMinRows(cars);
console.log("Max Price Row:", result.maxPriceRow);
console.log("Min Price Row:", result.minPriceRow);
console.log("Max Mileage Row:", result.maxMileageRow);
console.log("Min Mileage Row:", result.minMileageRow);

 

2. 정렬

// 주행거리 기준으로 오름차순 정렬
cars.sort((a, b) => a[3] - b[3]);

// 주행거리 기준으로 내림차순 정렬
cars.sort((a, b) => b[3] - a[3]);

 

3. 결과

Max Price Row: [ '포르쉐 911 (992) 카레라 GTS 카브리올레', 22990, '광주', 6022 ]
Min Price Row: [ '포르쉐 718 카이맨 4.0 GT4', 40, '경기', 25 ]
Max Mileage Row: [ '아우디 A6 (C8) 40 TDI 콰트로 프리미엄', 4090, '경기', 81937 ]
Min Mileage Row: [ '포르쉐 카이엔 (PO536) 3.0', 18500, '부산', 15 ]

반응형