0

I used following function for sorting array.

var trArr = [{'Abc', 1}, {'ACd', 3}, {'Aab', 4}];

function compare(a,b) {
          if (a.name > b.name)
          {
              return -1;
          }
          if (a.name < b.name)
          {
              return 1;
          }

          return 0;
}

trArr.sort(compare);

result:

[{'ACd', 3}, {'Aab', 4}, {'Abc', 1}];

above result is due to capital 'C'

I need the following result:

[{'Aab', 4}, {'Abc', 1}, {'ACd', 3}];
Greg
  • 18,111
  • 5
  • 46
  • 68
Kashif Hashmi
  • 75
  • 1
  • 2
  • 10

2 Answers2

1

Try this

var trArr = [{
    name: 'Abc',
    id: 1
}, {
    name: 'ACd',
    id: 3
}, {
    name: 'Aab',
    id: 4
}];

function compare(a, b) {
    if (a.name.toLowerCase() < b.name.toLowerCase()) {
        return -1;
    }
    if (a.name.toLowerCase() > b.name.toLowerCase()) {
        return 1;
    }
    return 0;
}

trArr.sort(compare);
console.log(trArr)

DEMO

Satpal
  • 132,252
  • 13
  • 159
  • 168
0

Try using toLowerCase

function compare(a, b) {
    if (a.name.toLowerCase() > b.name.toLowerCase()) {
        return -1;
    }
    if (a.name.toLowerCase() < b.name.toLowerCase()) {
        return 1;
    }
    return 0;
}
beautifulcoder
  • 10,832
  • 3
  • 19
  • 29