JS数组排序的简单方法
<p>JavaScript中有一个 sort 函数,用于数组排序。它排序的效果差强人意,试看如下代码:<br><br></p><pre><script language=<span style="color: magenta">"javascript"</span>>
<span style="color: blue">let</span> ar = ;
ar.sort();
console.table(<span style="color: magenta">'sort : '</span>,ar);
ar.sort(<span style="color: blue">function</span>(a,b) {
<span style="color: blue">return</span> a - b;
});</pre><pre>console.table(<span style="color: magenta">'sort fun : '</span>, ar);
</script>
</pre>
<p><br>我们用了两种方法对数组 ar 进行排序,一个是直接使用 sort() 函数,另一个是在 sort() 函数中再使用一个函数对数组元素进行规则排序。结果如下图所示:</p><p><br></p><p></p><p>可以看到,sort函数直接使用,排序结果有问题,所以必须通过调用自定义函数的方式排序结果才能满意。原因在于,sort函数是针对英文字母进行排序的,对数字的排序很外行。</p><p><br></p><p>本例仅针对 number 类型的数组元素进行排序,针对文本元素的话,是英文的好办,直接用sort,是其他语言的文本,则需要其他的手段,但依然离不开sort函数。</p>
直接排序,数字30的位置不对了。
return a - b; 这个的含义是a到b吧,我的第一反应是减去{:4_173:} “针对文本元素的话,是英文的好办,直接用sort,”
那它对英文的排序规则是什么,是26个字母的顺序?对单词也是这样? 这个好像是升序的排序,降序的也能排么? 站旁边喝彩{:4_174:} 樵歌 发表于 2022-6-20 11:37
站旁边喝彩
蟹蟹 红影 发表于 2022-6-20 09:36
直接排序,数字30的位置不对了。
return a - b; 这个的含义是a到b吧,我的第一反应是减去
你的第一反应是对的。a-b 这里是提供一个比较规则,两两相减,而后重排,实际上是调用sort函数内在的冒泡功能进行排序,我们就无需写一个冒泡程序了。 红影 发表于 2022-6-20 09:38
“针对文本元素的话,是英文的好办,直接用sort,”
那它对英文的排序规则是什么,是26个字母的顺序?对 ...
是的。先按第一个字母排序,第一个字母相同的按第二个,依此类推 红影 发表于 2022-6-20 09:39
这个好像是升序的排序,降序的也能排么?
a 代表上一个数组元素,b 代表数组相对于 a 的下一个元素,所以,降序的话,b-a 或 -(a-b) 马黑黑 发表于 2022-6-20 12:15
你的第一反应是对的。a-b 这里是提供一个比较规则,两两相减,而后重排,实际上是调用sort函数内在的冒泡 ...
啊,大小排列竟然要用到冒泡功能才能实现啊,怪不得你说它排序的效果差强人意{:4_173:} 马黑黑 发表于 2022-6-20 12:17
是的。先按第一个字母排序,第一个字母相同的按第二个,依此类推
哦哦。我倒是觉得这个还是对数字更有用点。 马黑黑 发表于 2022-6-20 12:20
a 代表上一个数组元素,b 代表数组相对于 a 的下一个元素,所以,降序的话,b-a 或 -(a-b)
也就是说,不能直接使用,还是需要这个函数在才行的吧。 红影 发表于 2022-6-20 14:12
也就是说,不能直接使用,还是需要这个函数在才行的吧。
对,除非仅是英文排序 红影 发表于 2022-6-20 14:11
哦哦。我倒是觉得这个还是对数字更有用点。
排序都有用。比如姓名排序,按读音排序的那种,还有我们的lrc转换,也需要用到排序功能 红影 发表于 2022-6-20 14:10
啊,大小排列竟然要用到冒泡功能才能实现啊,怪不得你说它排序的效果差强人意
是的 马黑黑 发表于 2022-6-20 19:07
对,除非仅是英文排序
嗯嗯,知道了。 马黑黑 发表于 2022-6-20 19:08
排序都有用。比如姓名排序,按读音排序的那种,还有我们的lrc转换,也需要用到排序功能
就是那个有两排时间的那种吧{:4_173:} 红影 发表于 2022-6-21 16:32
就是那个有两排时间的那种吧
对,有多个时间信息的歌词,它会分成若干句,所以必须排序 红影 发表于 2022-6-21 16:32
嗯嗯,知道了。
挺好 马黑黑 发表于 2022-6-20 12:12
蟹蟹
横着走{:4_173:}
页:
[1]
2