Search
 
SCRIPT & CODE EXAMPLE
 

JAVASCRIPT

array sort by two properties

console.log(fruits.sort((a, b)=> {
  if (a.colA === b.colA){
    return a.colB < b.colB ? -1 : 1
  } else {
    return a.colA < b.colA ? -1 : 1
  }
}))

/*
> [{colA: "apple", colB: "granny smith"},
  {colA: "apple", colB: "red delicious"},
  {colA: "orange", colB: "blood"},
  {colA: "orange", colB: "clementine"},
  {colA: "orange", colB: "navel"},
  {colA": "pear", colB: "green anjou"},
  {colA: "pear", colB: "red anjou"}]
  */
Comment

javascript sort array by multiple properties

var sort_by;

(function() {
    // utility functions
    var default_cmp = function(a, b) {
            if (a == b) return 0;
            return a < b ? -1 : 1;
        },
        getCmpFunc = function(primer, reverse) {
            var dfc = default_cmp, // closer in scope
                cmp = default_cmp;
            if (primer) {
                cmp = function(a, b) {
                    return dfc(primer(a), primer(b));
                };
            }
            if (reverse) {
                return function(a, b) {
                    return -1 * cmp(a, b);
                };
            }
            return cmp;
        };

    // actual implementation
    sort_by = function() {
        var fields = [],
            n_fields = arguments.length,
            field, name, reverse, cmp;

        // preprocess sorting options
        for (var i = 0; i < n_fields; i++) {
            field = arguments[i];
            if (typeof field === 'string') {
                name = field;
                cmp = default_cmp;
            }
            else {
                name = field.name;
                cmp = getCmpFunc(field.primer, field.reverse);
            }
            fields.push({
                name: name,
                cmp: cmp
            });
        }

        // final comparison function
        return function(A, B) {
            var a, b, name, result;
            for (var i = 0; i < n_fields; i++) {
                result = 0;
                field = fields[i];
                name = field.name;

                result = field.cmp(A[name], B[name]);
                if (result !== 0) break;
            }
            return result;
        }
    }
}());
Comment

PREVIOUS NEXT
Code Example
Javascript :: foreach in javascript 
Javascript :: addclass removeclass jquery 
Javascript :: get format file in javascript 
Javascript :: change image onclick html 
Javascript :: print all variables defined javascript 
Javascript :: flatten an array without using .flat(); 
Javascript :: cdn jquery 
Javascript :: On pressing enter change the focus to the next input field 
Javascript :: react private route 
Javascript :: how to drop collection in mongoose 
Javascript :: javascript right trim 
Javascript :: nodejs path 
Javascript :: all input value empty jquery 
Javascript :: StatusBar 
Javascript :: onclick function jquery 
Javascript :: get all the child of the same class javascript 
Javascript :: redirect all request http to https express js 
Javascript :: angular 2 reactive forms radio button by default checked 
Javascript :: how to know if ajax is running 
Javascript :: sequelize relation does not exist 
Javascript :: toggle class jquery not working 
Javascript :: javascript arrow functions default parameter 
Javascript :: chart js small bars too thin 
Javascript :: js and 
Javascript :: json example 
Javascript :: execute bash program using js 
Javascript :: add tab to textarea 
Javascript :: react hook form reset 
Javascript :: encrypt javascript node 
Javascript :: initialize express app 
ADD CONTENT
Topic
Content
Source link
Name
2+7 =