二维数组:
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 标准并没有规定如何进行本地特定的比较操作,它只规定该函数采用底层操作系统提供的排序规则。