[javascript] 자바스크립트 선택정렬 (자바스크립트 배열 정렬)

[javascript] 자바스크립트 선택정렬 (자바스크립트 배열 정렬)

// 파일객체 배열 이름순 정렬하기
function sortFileArray(_fileArr) {
    if (_fileArr == null || _fileArr.length < 2) {
        return _fileArr;
    }
 
    var fileCount = _fileArr.length;
    var tempObj = null;
        for (var i=0; i<fileCount; i++) {
            for (var k=i+1; k<fileCount; k++) {

                // 문자열 배열인 경우

                // if (checkShouldChangeOrder(_fileArr[i], _fileArr[k])) {

               

                // 파일 객체 배열인 경우, 객체.name 순으로 정렬
                if (checkShouldChangeOrder(_fileArr[i].name, _fileArr[k].name)) {
                    tempObj = _fileArr[i];
                    _fileArr[i] = _fileArr[k];
                    _fileArr[k] = tempObj;
                }
            }
        }
 
    return _fileArr;
}

// 문자열 순서 바꿔야 하는지 검사. 순서 바꿔야 하는 경우 true 리턴
function checkShouldChangeOrder(_str1, _str2) {
    if (_str1 == null) {
        _str1 = “”;
    }
 
    if (_str2 == null) {
        _str2 = “”;
    }
 
    var len1 = _str1.length;
    var len2 = _str2.length;

    // 공통길이 계산
    var comLen = len1;
    if (comLen > len2) {
        comLen = len2;
    }
 
    var ch1 = 0;
    var ch2 = 0;
    for (var i=0; i<comLen; i++) {
        ch1 = parseInt(_str1.charCodeAt(i), 10);
        ch2 = parseInt(_str2.charCodeAt(i), 10);
      
        if (ch1 > ch2) {
            return true;
        } else if (ch1 < ch2) {
            return false;  
        }
    }
 

    // 공통길이까지 내용 같을 경우 길이순 정렬
    if (len1 > len2) {
        return true;
    } else if (len1 < len2) {
        return false;
    }
 
    return false;
}