js 사용자 정의 다 중 필드 정렬
//    
var items = [
    {name:"linc",age:28,num:1234},
    {name:"linc",age:28,num:12345},
    {name:"kiki",age:20,num:12345},
    {name:"  ",age:26,num:123},
    {name:"  ",age:27,num:101},
    {name:"  ",age:26,num:111},
    {name:"  ",age:29,num:110},
    {name:"  ",age:30,num:110}
];
//          
(function asc-desc(){
    items.sort(function (a, b) {
        return SortByProps(a, b, { "name": "ascending", "age": "descending" });
    });
    console.log(items)
})();
//         ,        ,      
(function desc(){
    items.sort(function (a, b) {
        return SortByProps(a, b, { "name": "descending", "age": "descending" });
    });
    console.log(items)
})();
//          ,       
(function default(){
    items.sort(function (a, b) {
        return SortByProps(a, b);
    });
    console.log(items)
})();
//            ,           
function SortByProps(item1, item2, obj) {
    var props = [];
    if(obj){
        props.push(obj)
    }
    var cps = []; //           。
    //          ( obj   ),          。
    //                              
    var asc = true;
    if (props.length < 1) {
        for (var p in item1) {
            if (item1[p] > item2[p]) {
                cps.push(1);
                break; //        。
            } else if (item1[p] === item2[p]) {
                cps.push(0);
            } else {
                cps.push(-1);
                break; //        。
            }
        }
    } 
    else {
        for (var i = 0; i < props.length; i++) {
            var prop = props[i];
            for (var o in prop) {
                asc = prop[o] === "ascending";
                if (item1[o] > item2[o]) {
                    cps.push(asc ? 1 : -1);
                    break; //        。
                } else if (item1[o] === item2[o]) {
                    cps.push(0);
                } else {
                    cps.push(asc ? -1 : 1);
                    break; //        。
                }
            }
        }
    }        
    //                              
    for (var j = 0; j < cps.length; j++) {
        if (cps[j] === 1 || cps[j] === -1) {
            return cps[j];
        }
    }
    return false;          
}
                이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
[2022.04.19] 자바스크립트 this - 생성자 함수와 이벤트리스너에서의 this18일에 this에 대해 공부하면서 적었던 일반적인 함수나 객체에서의 this가 아닌 오늘은 이벤트리스너와 생성자 함수 안에서의 this를 살펴보기로 했다. new 키워드를 붙여 함수를 생성자로 사용할 때 this는...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.