Reputation: 315
I'd like to be able to sort an array an array of objects in JavaScript based on the first word in the string. Currently the sort function I'm using uses all words in the string.
JSON data:
"awds": [
{"awd":"adobe edge award"},
{"awd":"besty"},
{"awd":"c award"},
{"awd":"awwward award"},
{"awd":"desk award"},
{"awd":"adobe edge award"},
{"awd":"creative edge award"},
{"awd":"snoogle edge award"},
{"awd":"scuba edge award"},
{"awd":"xidoe edge award"}
]
JavaScript:
var compareNames = function(a, b) {
var nameA = a.awd.toLowerCase();
var nameB = b.awd.toLowerCase();
if (nameA > nameB) { return 1; }
return 0;
};
Current Output:
adobe edge award
besty
c award
awwward award
desk award
adobe edge award
creative edge award
snoogle edge award
scuba edge award
xidoe edge award
Desired Output:
adobe edge award
adobe edge award
awwward award
c award
creative edge award
scuba edge award
snoogle edge award
xidoe edge award
Upvotes: 0
Views: 2694
Reputation: 28995
var o = [
{"awd":"adobe edge award"},
{"awd":"besty"},
{"awd":"c award"},
{"awd":"awwward award"},
{"awd":"desk award"},
{"awd":"adobe edge award"},
{"awd":"creative edge award"},
{"awd":"snoogle edge award"},
{"awd":"scuba edge award"},
{"awd":"xidoe edge award"}
];
o.sort(function(a, b) {
var nameA = a.awd.toLowerCase();
var nameB = b.awd.toLowerCase();
if(nameA === nameB) return 0;
return nameA > nameB ? 1 : -1;
});
console.log(o);
Upvotes: 1
Reputation: 272066
awds.sort(function (a, b) {
var aword = a.awd.toLowerCase().match(/[^ ]+/)[0];
var bword = b.awd.toLowerCase().match(/[^ ]+/)[0];
return aword == bword ? 0 : (aword < bword ? -1 : 1);
});
Upvotes: 1
Reputation: 104760
Your method will work if you return -1 when the first item is not greater than the second-
var compareNames = function(a, b) {
var nameA = a.awd.toLowerCase();
var nameB = b.awd.toLowerCase();
if(nameA==nameB) return 0;
return (nameA > nameB)? 1:-1;
};
Upvotes: 0
Reputation: 15351
You can use Array.sort
with compare function. See https://developer.mozilla.org/en-US/docs/JavaScript/Reference/Global_Objects/Array/sort
Upvotes: 1