百度IFE学习笔记(一)js二维数组排序

来源:互联网 发布:如果希特勒赢了 知乎 编辑:程序博客网 时间:2024/06/05 20:36

二维数组:

var aqiData = [        ["北京", 90],        ["上海", 50],        ["福州", 10],        ["广州", 50],        ["成都", 90],        ["西安", 100]    ];

一、以数值排序:

以 apiData[][1] 排序:

升序(从小到大):

var data = apiData.sort(function (x,y) {    return x[1]-y[1];});
倒序(从大到小):
aqiData.sort(function (x,y) {            return y[1]-x[1];        });

过程:(冒泡算法)

1.数组中元素依次赋给x,y,

arr[0]->x,arr[1]->y

则 x[1]相当于arr[0][1], x[1]相当于arr[1][1]

2.比较(例:x[1] – y[1]):

if(x[1] – y[1])>0

return y,x

else

return x,y

3.then

continue,

直到整个数组排序完成。



二、以字符串排序:

以 apiData[][0] 排序:

升序(从小到大):

apiData.sort(function(x, y){  return x[0].localeCompare(y[0]);});
倒序(从大到小):
apiData.sort(function(x, y){  return y[0].localeCompare(x[0]);});
localeCompare:用本地特定的顺序来比较两个字符串。

参考:w3school:  http://www.w3school.com.cn/jsref/jsref_localeCompare.asp

用法:

stringObject.localeCompare(target)
参数target:要以本地特定的顺序与 stringObject 进行比较的字符串。

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

注:

把 < 和 > 运算符应用到字符串时,它们只用字符的 Unicode 编码比较字符串,而不考虑当地的排序规则。以这种方法生成的顺序不一定是正确的。例如,在西班牙语中,其中字符 “ch” 通常作为出现在字母 “c” 和 “d” 之间的字符来排序。

localeCompare() 方法提供的比较字符串的方法,考虑了默认的本地排序规则。ECMAscript 标准并没有规定如何进行本地特定的比较操作,它只规定该函数采用底层操作系统提供的排序规则。






原创粉丝点击