JavaScriptは、あるオブジェクトの属性に従って配列を並べ替えます.

1525 ワード

面接のアルゴリズムは問題を解く思考の中のあるステップを書いて、その時は少しぼんやりしていて、できませんでした.
需要:配列を並べ替えます.この配列の要素は対象です.例:

//                
const person = [
    {name:"jack", age:21},
    {name:"rose", age:17},
    {name:"mike", age:23},
    {name:"jonny", age:9}
];
 
まず、配列関数sortの使い方を知ると、比較関数を設計し、パラメータとしてsort関数に伝達し、要素の順序を設定することができます.
//              

function compare(v1, v2) {
    if (v1 < v2) return -1;
    else if (v1 > v2) return 1;
    else return 0;
}

const array = [1,7,8,2,3];

console.log(array.sort(compare)); //   : [ 1, 2, 3, 7, 8 ]
その後、JavaScriptにおいて、関数はパラメータとして別の関数に伝達されてもよく、関数の戻り値としてもよいことが知られている.
 
問題解決の考え方:関数を定義し、この関数は属性名を受信し、この属性名に基づいて比較関数を作成して、戻り値とします.この関数はパラメータとしてsort関数に伝達されます.
 
コードの実装:
//         ,      person

const person = [
    {name:"jack", age:21},
    {name:"rose", age:17},
    {name:"mike", age:23},
    {name:"jonny", age:9}
];

function objectSort(age) {
    //       age             
    //               sort
    return function (obj1, obj2) { 
        if (obj1[age] < obj2[age]) return -1;
        else if (obj[1] > obj2[age]) return 1;
        else return 0;
    }
}

person.sort(objectSort("age")); //         

console.log(person);
もちろん比較関数は簡略化できます.
function objectSort(age) {
    //       age             
    //               sort
    return function (obj1, obj2) { 
        return obj1[age] - obj2[age];
    }
}