序
在我们的工作中对于数组的运用还是比较多的,为了方便日常的使用,今天总结一下。主要包含以下四种:数组去重、数组顺序打乱、数组判断、数组排序
为了方便大家理解,在每个方法前添加相关概念详解,对概念熟知的略过。
一.数组去重
1.indexOf方法
概念:indexOf() 方法可返回某个指定的字符串值在字符串中首次出现的位置。第一位出现返回0,若没有出现则返回-1。
strObj.indexOf(subString[, startIndex])
- 参数 strObj 必选项。String 对象或文字。
- subString 必选项。要在 String 对象中查找的子字符串。
- tarIndex 可选项。该整数值指出在 String 对象内开始查找的索引。如果省略,则从字符串的开始处查找。
function unique (arr) {
var result = [];
for (var i = 0; i < arr.length; i++){
if (result.indexOf(arr[i]) == -1) result.push(arr[i]);
}
return result;
}
2.相邻比较法
解叙:相邻元素比较若相同加入新数组,返回新数组。
function unique (arr) {
arr.sort();
var result=[arr[0]];
for(var i = 1; i < arr.length; i++){
if( arr[i] !== arr[i-1]) {
result.push(arr[i]);
}
}
return result;
}
3.shift方法
概念:shift()方法用于把数组的第一个元素从其中删除,并返回第一个元素的值。
ps:要删除并返回数组的最后一个元素,请使用 pop() 方法。
function unique(arr,newArr) {
var num;
if (-1 == arr.indexOf(num = arr.shift())) newArr.push(num);
arr.length && unique(arr,newArr)
if(arr.length==0){
return newArr;
};
}
二、数组顺序打乱
1.splice方法
概念:Math.random()随机返回一个大于或等于 0 但小于 1 的符号为正的数字值。
splice():可以用于插入、删除或替换数组的元素;
删除-用于删除元素,两个参数,第一个参数(要删除第一项的位置),第二个参数(要删除的项数)
插入-向数组指定位置插入任意项元素。三个参数,第一个参数(起始位置),第二个参数(0),第三个参数(插入的项)
替换-向数组指定位置插入任意项元素,同时删除任意数量的项,三个参数。第一个参数(起始位置),第二个参数(删除的项数),第三个参数(插入任意数量的项)
function shuffle(array) {
var result = [],
n = array.length,
i;
while (n) {
i = Math.floor(Math.random() * n--);
result.push(array.splice(i, 1)[0]);
}
return result;
}
2.首位交换原则
function shuffle(array) {
var m = array.length,
temp, i;
while (m) {
i = Math.floor(Math.random() * m--);
temp = array[m];
array[m] = array[i];
array[i] = temp;
}
return array;
}
三、判断数组
instanceof运算符
instanceof 运算符要求其左边的运算数是一个对象,右边的运算数是对象类的名字或构造函数。
var arrNew = [];
arrNew instanceof Array;
四、数组排序
sort()运算符排序法
sort()方法使数组中的元素按照一定的顺序排列。
升序:
function sortNum(a,b) {
return a-b;
}
var myarr = new Array("80","16","50","6","100","1");
myarr.sort(sortNum)
降序:b-a即可
function sortNum(a,b) {
return b-a;
}
var myarr = new Array("80","16","50","6","100","1");
myarr.sort(sortNum)