jquery - Sorting taking case into consideration -
i using following code
function asc(a, b) { return ($(b).text()) < ($(a).text()); }
when pass a,d,c,e,b correct values a,b,c,d,e
however when pass a,d,c,e,b c,a,b,d,e
how can make code work when different case used?
if you're looking case-insensitive sort, easiest way convert both sides all-upper or all-lower case.
// note: not array#sort function asc(a, b) { return $(b).text().tolowercase() < $(a).text().tolowercase(); }
note, thought, i'm assuming you're not using array#sort
, doesn't array#sort
expects (return 0
, <0
, or >0
).
side note: ()
around $(b).text()
, $(a).text()
in quoted code have no effect whatsoever, i've removed them above.
from comment:
if have sequence 'c' after 'c' in example, how it?
ah, that's different. works array#sort
, you'll have modify match you're using asc
(i don't know expect in case strings match): live copy
// note: designed array#sort, may need modifying function asc(a, b) { var btext = $(b).text(), atext = $(a).text(), blc, alc; if (atext === btext) { // same return 0; } alc = atext.tolowercase(); blc = btext.tolowercase(); if (alc === blc) { // case-insensitive match, compare case-sensitive , // ensure uppercase comes after lowercase. return atext < btext ? 1 : -1; } // different ignoring case return alc < blc ? -1 : 1; }
Comments
Post a Comment