javascript 对混合字符串和空值的数组进行排序

2024-01-11

当对由字符串、空值和零混合组成的数组进行排序时,我得到的结果与预期不正确,空值似乎被排序为“空”字符串。 我这样做了(在 FireFox 上测试):

var arr1 = arr2 = [null, "b", "c", "d", null, "e", 0, "g", null, 0, "h", "i", "l", "m", "n", "o", "p", "ne", "nur", "nimbus"];

document.write("SORTED ARRAY:<br>");
arr1.sort();
arr1.forEach(function(val){document.write(val + "; ")});

结果是:

排序数组: 0; 0;乙; C; d; e; G; H;我;升;米; n;氖;雨云;无效的;无效的;无效的;努尔;哦; p;

您是否知道如何在数组排序期间将 null 值视为空字符串,以便它们与零一起出现在排序后的数组中的第一个。

Thanks!


这将通过将所有内容转换为字符串(特别是将 null 转换为空字符串)并允许 JavaScript 的内置字符串比较来完成您想要的工作:

arr2.sort( function(a, b) 
{
    /* 
       We avoid reuse of arguments variables in a sort
       comparison function because of a bug in IE <= 8.
       See http://www.zachleat.com/web/array-sort/
    */
    var va = (a === null) ? "" : "" + a,
        vb = (b === null) ? "" : "" + b;

    return va > vb ? 1 : ( va === vb ? 0 : -1 );
} );
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

javascript 对混合字符串和空值的数组进行排序 的相关文章

随机推荐