前台js页面排序,按照中文名字排序

图片说明

手机页面,用的mui. 现在页面中已经显示数据,需要进行一个排序,点击品牌的时候,需要按照品牌中文名称排序,请问大大神怎么写代码啊

0

9个回答

首先将汉字转拼间,再array.sort排序即可。
http://dl.jufuns.cn/js/ss.js 为汉字拼音映射表。

当然,你也可以打开http://blog.csdn.net/jiangfuqiang/article/details/13003567这个地址,浏览器控制台一打开,执行以下js

var py2hanzi={},py2unicode={},hanzi2py={},unicode2py={};
for( s=$('div.dp-highlighter ol li '),i=0,l=s.length;i<l;i++){p = ($(s[i]).text().replace(/\u00a0+/g,'|')).split('|'),k =String(p[0].replace(/\d+$/,'')).toLowerCase(),!py2hanzi[k] &&(py2hanzi[k]=[],py2unicode[k]=[]);p[1].split('').forEach(e => (!py2hanzi[k].includes(e)&&(py2hanzi[k].push(e=e),py2unicode[k].push(e.charCodeAt())),!hanzi2py[e] && (hanzi2py[e]=k),!unicode2py[e] && (unicode2py[e.charCodeAt()]=k)));}
window.JSON && console.log(JSON.stringify(py2hanzi));
window.JSON && console.log(JSON.stringify(py2unicode));
window.JSON && console.log(JSON.stringify(hanzi2py));
window.JSON && console.log(JSON.stringify(unicode2py));
0

数据是从后台数据库动态获取的吗?是的话,就在点击品牌的时候,调用你的查询数据接口,然后把 品牌 desc或者品牌 asc传到后台,然后调用你的查询语句,再将数据返回到前台,重新填充表格。

3
var data = ['魅族', '小米', '华为', '苹果' , '乐视'];
console.log(data.sort());

上面是最简单的排序,输出结果如下所示:

[ '乐视', '华为', '小米', '苹果', '魅族' ]

当然,我们可以获取第一个首字的编码,如下面这种方式:

var data = ['魅族', '小米', '华为', '苹果' , '乐视'];
var itemMap = {};
for (var item of data) {
  itemMap[item.charCodeAt(0)] = item;
}

console.log(itemMap);

输出结果为:

{ '20048': '乐视',
  '21326': '华为',
  '23567': '小米',
  '33529': '苹果',
  '39749': '魅族' }

这样我们就可以更具编码大小进行排序了,如果要获取整个词语的大小,我们只需将循环内部替换为如下代码:

for (var item of data) {
  var first = Number.isNaN(item.charCodeAt(0)) ? 0 : item.charCodeAt(0);
  var second = Number.isNaN(item.charCodeAt(1)) ? 0 : item.charCodeAt(1);
  itemMap[first + second] = item;
}

进行重新排序即可

0
avenccssddnn
ipple1986 回复qq_37823305: 它只是简单地按unicode编码的顺序去排,根据达不到字母排序功能。看看我的回复吧,亲
一年多之前 回复
suwu150
suwu150 你可以按照下面这个方法取到首字母拼音,然后就可以使用sort进行排序了http://www.jb51.net/article/128190.htm
一年多之前 回复
suwu150
suwu150 可以是可以,但是需要引入插件进行操作
一年多之前 回复
qq_37823305
qq_37823305 可以获取首字的字幕拼音字幕进行排序么?
一年多之前 回复

如下所示,可以进行正确排序,其中引入了一个库的地址:http://xiazai.jb51.net/201711/yuanma/ChinesePY(jb51.net).rar

<!DOCTYPE html>
<html lang="zh">
<head>
    <meta charset="utf-8" />
    <script src="http://libs.baidu.com/jquery/2.0.0/jquery.min.js"></script>
    <!--引入外部库-->
    <script type="text/javascript" src="ChinesePY.js"></script>
    <script>
      var data = ['魅族', '小米', '华为', '苹果' , '乐视'];
      var itemMap = {};
      for (var item of data) {
        // 获取首字母
        var result = Pinyin.GetJP(item);
        itemMap[result] = item;
      }
      console.log(itemMap);

    </script>
</head>
<body style="font-size:12px">
<form>
    <div>

    </div>
</form>
</body>
</html>

最后结果如下所示:

hw:"华为"
ls:"乐视"
mz:"魅族"
pg:"苹果"
xm:"小米"
0

如果你想要对一个对象的属性进行排序,你可以通过Object.keys获取键值,进行排序,如果不会实现,就可以查看这个地址:
https://www.npmjs.com/package/sort-object-attribute,查看其实现原理

0
Pinyin.GetJP(this.value);
Pinyin.GetQP(this.value);
Pinyin.GetHP(this.value);

在库中有三个接口,.GetJP首字母,GetQP全拼,GetHP混拼

0

你可以把全拼维护在数据库里面,然后点击的时候后台排序。

0

Comparator comparator = Collator.getInstance(java.util.Locale.CHINA);
String[] arrStrings = {"c","b","a"};
Arrays.sort(arrStrings, comparator);
for (int i = 0; i < arrStrings.length; i++)
System.out.println (arrStrings[i]);
}

-1

给你两个思路:
第1,如果你那一列中文的品牌是固定的,你就可以像楼上说的,写死一个idx:品牌名的数组,直接用idx去排序即可。
第2,如果你想更支持更多的中文排序的话,http://blog.csdn.net/mergerly/article/details/53260164 访问这个,拿到他的转拼音算法,之后自定义一个

String.prototype.compare=function(otherStr){
      thisStr = this.toString();
            ...作比较排序

}
-1
Csdn user default icon
上传中...
上传图片
插入图片
抄袭、复制答案,以达到刷声望分或其他目的的行为,在CSDN问答是严格禁止的,一经发现立刻封号。是时候展现真正的技术了!