How to sort a JavaScript array of objects by nested object property?

后端 未结 8 1867
广开言路
广开言路 2020-12-01 06:37

I have this function to sort a JavaScript array of objects based on a property:

// arr is the array of objects, prop is the property to sort by
var sort = fu         


        
8条回答
  •  慢半拍i
    慢半拍i (楼主)
    2020-12-01 06:42

    This is my modify code.

    // arr is the array of objects, prop is the property to sort by
    var s = function (prop, arr) {
        // add sub function for get value from obj (1/2)
        var _getVal = function(o, key){
            var v = o;
            var k = key.split(".");
            for(var i in k){
                v = v[k[i]];
            }
            return v;
        }
        return arr.sort(function (a, b) {
            // get value from obj a, b before sort (2/2)
            var aVal = _getVal(a, prop);
            var bVal = _getVal(b, prop);
            if (aVal < bVal) {
                return -1;
            } else if (aVal > bVal) {
                return 1;
            } else {
                return 0;
            }
        });
    };
    

提交回复
热议问题