今天同学问到要通过汉字笔画来排序,问怎么实现,其实我也不知道,但是我觉得这种东西肯定有解决方案,于是去百度搜了搜

果然,大神写的 cnchar 就出现了。地址:https://github.com/theajack/cnchar

写的很简单,也很方便,引入一个 js就完事了。

 <script src="https://www.theajack.com/cnchar/assets/js/cnchar.min.js"></script>

1.spell()
        获取汉字的全拼。如"汉字".spell()的结果就是HanZi。默认是每个汉字首字母大写,如果希望全部大写可以这样写:"汉字".spell("up") 或 "汉字".spell("upper"),参数大小写不限制。
2.spellFirst()
        获取每个汉字的首字母。如 "汉字".spellFirst() 的结果就是 HZ。默认是大写,如果希望全部小写可以这样写:"汉字".spellFirst("low") 或 "汉字".spellFirst("lower"),参数大小写不限制。
3.stroke()
        获取汉字的笔画数。如 "汉字".stroke() 的结果就是 11。

此处写一个示例,通过 首字母笔画排序:

数据一般都存在一个数组里面,一串数据,里面有个 name,我们就获取这个额name的首字母的笔画,在外面定义一个 新的数组,遍历原来的数据,在循环里面定义一个 json对象,加一个属性为 笔画,一个 data 属性为该条数据,然后外面定义的数组里面存的就是 有 笔画的数据了,然后再对该数据进行排序就大功告成

看看代码:

<script src="https://www.theajack.com/cnchar/assets/js/cnchar.min.js" ></script>
<script>
	// 原始数据
	var data = [
		{
			"name":"唐某人"
		},
		{
			"name":"张子强"
		},
		{
			"name":"李某人"
		},
		{
			"name":"王某人"
		},
		{
			"name":"一某人"
		},
	];

	// 外面定义的数组,存操作后的数据
	var result = [];
	
	// 数据处理,绑定笔画
	for (var i = data.length - 1; i >= 0; i--) {
		// 定义一个对象
		var obj = {};
		// 存储笔画
		obj.stroke = data[i].name.substring(0,1).stroke();
		// 存储数据
		obj.data = data[i];
		// 存入result数组里面去
		result.push(obj);
	}

	// 排序 使用 result.stroke 也就是笔画排序
	result.sort(function(a,b){
		return a.stroke - b.stroke;
	});

	console.log( result );

</script>

运行效果:

Logo

旨在为数千万中国开发者提供一个无缝且高效的云端环境,以支持学习、使用和贡献开源项目。

更多推荐