所以我有一个只包含字符串的数组.
阵列阵列将显示为一个表,并且可能有超过1000行,每个行中有20个或更多的值.
阵列阵列将显示为一个表,并且可能有超过1000行,每个行中有20个或更多的值.
例如:
var arr = [ ["bob","12","yes"],["joe","","no"],["tim","19",["dan",""],"0",""] ]
字符串可以包含可以表示为字符串的任何东西,包括:“”,“”,“0”或“00-00-00”等…以及我用于排序的任何列.
我正在排序升序和降序,但我排序的一些值是空白字符串:“”.在所有现代浏览器中,如何获得空白字符串(仅)始终位于新数组的末尾?
目前他们是在升序结束时,但在下降的开始.
我正在排序如下(是的,我相信我可以做得更短):
if (direction == "asc") { SortedArr = arr.sort(function (a,b) { if (a[colToSortBy] == '') { return -1; } if (a[colToSortBy].toupperCase() < b[colToSortBy].toupperCase()) { return -1; } if (a[colToSortBy].toupperCase() > b[colToSortBy].toupperCase()) { return 1; } return 0; }); } else { SortedArr = arr.sort(function (a,b) { if (a[colToSortBy] == '') { return -1; } if (b[colToSortBy].toupperCase() < a[colToSortBy].toupperCase()) { return -1; } if (b[colToSortBy].toupperCase() > a[colToSortBy].toupperCase()) { return 1; } return 0; }); }
解决方法
空字符串结束
Working example在JSfiddle上,无论顺序是升序还是降序,都将空字符串始终置于结尾.这可能是一个可用性问题,但这是解决方案:
if (direction == "asc") { SortedArr = arr.sort(function (a,b) { return (a[col] || "|||").toupperCase().localeCompare((b[col] || "|||").toupperCase()) }); } else { SortedArr = arr.sort(function (a,b) { return (b[col] || "!!!").toupperCase().localeCompare((a[col] || "!!!").toupperCase()) }); }
原文地址:https://www.jb51.cc/js/152742.html
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。