数组去重
2019-02-10 本文已影响0人
嘤嘤嘤998
数组去重
1. ES6 SET
ES6 提供了新的数据结构 Set。它类似于数组,但不是数组。其成员的值都是唯一的,没有重复的值。
Array.from()方法就是将一个类数组对象或者可遍历对象转换成一个真正的数组
function dedupe(array) {
return Array.from(new Set(array));
}
dedupe([1, 1, 2, 3]) // [1, 2, 3]
2. 遍历数组(利用indexOf没匹配返回-1)
思路:新建一数组,遍历传入数组,若元素不在新数组中就添加到新数组中。
注意:判断值是否在数组的方法“indexOf”是ECMAScript5方法,IE8以下不支持,需多写兼容低版本浏览器代码。
indexOf() : 返回第一个匹配的下标,如果没有匹配返回-1
indexOf兼容代码(JS实现):
if(!Array.prototype.indexOf){ //判断浏览器是否支持indexOf方法
Array.prototype.indexOf = function(item){
var result = -1,
arr_item = null;
if(this.length == 0) {
return result;
}
for(var i=0,len=this.length; i<len; i++){
arr_item = this[i];
if(arr_item === item){
result = i;
break;
}
}
return result;
};
}
数组去重代码:
function unique1(arr){
var newArr = [];//新建一个数组
for(var i=0,len=arr.length;i<len;i++){
if(newArr.indexOf(arr[i]) == -1){//若新数组中未包含该项则将其存入新数组
newArr.push(arr[i]);
}
}
return newArr;
}
3. 数组下标去重法(利用indexOf只匹配第一项)
思路:如果当前数组的第i项在当前数组中第一次出现的位置不是i,那么表示第i项是重复的,忽略掉。否则存入结果数组。
注意:此方法也用到了“indexOf”方法。
function unique2(arr){
var newArr = [];
for(var i=0, len=arr.length; i<len; i++){
if(arr.indexOf(arr[i]) == i){
newArr.push(arr[i]);
}
}
return newArr;
}
数组排序sort()
arrayObject.sort(sortby)
在原数组上进行排序,不生成副本。
注意:如果调用该方法时没有使用参数,将按字母顺序对数组中的元素进行排序,说得更精确点,是按照字符编码的顺序进行排序。
var values = [0, 1, 2, 5, 10, 15];
values.sort();
alert(values); //0,1,10,15,5
function sortNumber(a,b){
return a - b
}
var values = [0, 1, 2, 5, 10, 15];
values.sort(sortNumber);
alert(values); //0,1,5,10,15
数组倒序reverse()
var fruits = ["Banana", "Orange", "Apple", "Mango"];
fruits.reverse();
fruits 结果输出:
Mango,Apple,Orange,Banana