英文排序和中文排序

图片

这个问题我觉得其实还是挺简单的 最开始我想的还是太复杂了

实现英文排序和中文排序,都需要用到一个方法,就是sort();

sort() 方法用于对数组的元素进行排序。
arrayObject.sort(sortby);
对数组的引用。请注意,数组在原数组上进行排序,不生成副本。
如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。要实现这一点,首先应把数组的元素都转换成字符串(如有必要),以便进行比较。

这是W3C上面对sort方法的解释

先说一下我对排序方法的想法

  1. 是先把你要的东西突突突到数组里
  2. 在数组里进行排序
  3. 清空原有块里的东西
  4. 把重新排过序的再突突突回去

图片

好的都说完了我们下期再见

23333


先说第一种 英文排序


// 定义一个你要存放的数组
var arr = [];
// 把你写在li当中的数据都突突突到数组里
$('.list li').each(function() {
    var num = $(this).text();
    arr.push(num);
})
// 然后给数组排序 其实这里我多此一举了 不同再来一个数组等于排序后的东西 可以直接输出arr
var resArr = arr.sort();
$('.list').empty();
var liString = '';
for(var i = 0; i < resArr.length; i++) {
    liString += '<li>' + resArr[i] + '</li>';
}
$('.list').append(liString);

超级简单有没有~


现在说说中文的


中文相比于英文的话 多了一个执行函数

var arr = [];
$('.list li').each(function() {
    var str = $(this).text();
    arr.push(str);
});
arr.sort(function(a, b) {
    return a.localeCompare(b)
});
$('.list').empty();
var liString = '';
for(var i = 0; i < arr.length; i++) {
    liString += "<li>" + arr[i] + "</li>";
}
$('.list').append(liString);

localeCompare()方法

用本地特定的顺序来比较两个字符串。
stringObject.localeCompare(target);
说明比较结果的数字。如果 stringObject 小于 target,则 localeCompare() 返回小于 0 的数。如果 stringObject 大于 target,则该方法返回大于 0 的数。如果两个字符串相等,或根据本地排序规则没有区别,该方法返回 0。

图片

既然都说到这里了 再加一个数字排序怎么样

数字排序和英文中文排序有一点不同

var arr = [1, 1000, 25];
arr.sort();

如果你这样书写,出来的结果就会不变,依然是1,1000,25;
这并不是方法没有执行,而是他是通过比较第一位再比较第二位来的话,就是25比1000大;
所以还要像中文排序一样,加一个函数来判断

arr.sort(function sortNumber(a, b) {
    return a - b;
});

这个时候arr的结果就会变成1,25,1000了。

图片

其实我觉得好像没有讲清楚来着 但是
不如你直接试试?

评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值