var arrSimple = newArray(1,8,7,6); arrSimple.sort(); // [1,6,7,8]
简单数组自定义排序
1 2 3 4
var arrSimple2 = newArray(1,8,7,6); arrSimple2.sort(function(a,b){ return b - a }); // [8,7,6,1] // 解释:a, b表示数组中的任意两个元素,若return > 0 b 前 a 后;reutrn < 0 a 前 b 后;a = b 时存在浏览器兼容 // 简化一下:a-b 输出从小到大排序,b-a 输出从大到小排序。
删除重复的元素只保留一个(两种实现思路)
方法一
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// 方法一:遍历要删除的数组arr, 把元素分别放入另一个数组tmp中,在判断该元素在arr中不存在才允许放入tmp中用到两个函数:for ...in 和 indexOf() var test = [2,4,4,5,"a","a"]; functionunique1(arr){ // 遍历arr,把元素分别放入tmp数组(不存在才放) var tmp = newArray(); for(var i in arr){ // 该元素在tmp内部不存在才允许追加 if(tmp.indexOf(arr[i])==-1){ tmp.push(arr[i]); } } return tmp; } unique1(test); // [2,4,5,"a"]
方法二
1 2 3 4 5 6 7 8 9 10 11 12 13 14
// 方法二:把目标数组arr的元素值和键的位置调换 自动就把重复的元素给删除掉了,调换后的样子:array('qiang'=>1,'ming'=>1,'tao'=>1) functionunique2(arr){ var tmp = newArray(); for(var m in arr){ tmp[arr[m]]=1; } // 再把键和值的位置再次调换 var tmparr = newArray(); for(var n in tmp){ tmparr.push(n); } return tmparr; } unique2(test); //[2,4,5,"a"]
方法三
1 2 3 4 5 6 7 8 9 10 11 12 13
// 方法三:返回新数组,保证类型不变 functionunique3(a){ var hash=[],arr=[]; for (var i = 0; i < a.length; i++) { hash[a[i]]!=null; if(!hash[a[i]]){ arr.push(a[i]); hash[a[i]]=true; } } console.log(arr); } unique3(test);// [2, 4, 5, "a"]
获取数组中的最大值和最小值
可以用传统的遍历,也可以用math
首先定义一个数组:
1
var arr = [54,65,43,21,12,34,45,58,97,24];
方法一
1 2 3 4 5 6 7
// 方法一、字符串拼接法 // 利用toString和join把数组转换为字符串,再和Math的max和min方法分别进行拼接,最后执行eval方法 var maxN = eval("Math.max(" + arr.toString() + ")"); var minN = eval("Math.min(" + arr.toString() + ")"); // 或者 var maxN = eval("Math.max(" + arr.join() + ")"); var minN = eval("Math.min(" + arr.join() + ")");
方法二
1 2 3 4 5
// 方法二、排序法 // 先把数组从小到大排序,数组第一个即为最小值,最后一个即为最大值 arr.sort(function(a,b){return a-b;}); var minN = arr[0]; var maxN = arr[arr.length-1];
方法三
1 2 3 4 5 6 7 8 9
// 方法三、假设法 // 假设数组第一个为最大(或最小值),和后边进行比较,若后边的值比最大值大(或比最小值小),则替换最大值(或最小值) var maxN = arr[0]; var minN = arr[0]; for(var i=1;i<arr.length;i++){ var cur = arr[i]; cur>maxN ? maxN=cur : null; cur<minN ? minN=cur : null; }
// 方法四、Math的max和min方法 // 使用apply方法使数组可以作为传递的参数 var maxN = Math.max.apply(null,arr); var minN = Math.min.apply(null,arr); // 多维数组可以这样做: var a=[1,2,3,[5,6],[1,4,8]]; var ta=a.join(",").split(",");// 转化为一维数组 var maxN = Math.max.apply(null,ta);// 最大值 var minN = Math.min.apply(null,ta);// 最小值