已知数组arr=[3, 3, 5, 5, 7, 1, 8, 8],去掉数组中重复的数,得到newArr=[3, 5, 7, 1, 8]
方法一:indexOf
var arr = [3, 3, 5, 5, 7, 1, 8, 8];
function removeRepeat(){
var newArr = []; //定义一个临时数组
for(var i = 0; i < arr.length; i++){ //循环遍历当前数组
//判断当前数组下标为i的元素是否已经保存到临时数组
//如果已保存,则跳过,否则将此元素保存到临时数组中
if(newArr.indexOf(arr[i]) === -1){
newArr.push(arr[i]);
}
}
return newArr;
}
方法二:hash表(哈希表,根据key value直接访问的数据结构)
var arr = [3, 3, 5, 5, 7, 1, 8, 8];
function removeRepeat(){
var h={}; //定义一个hash表
var newArr=[]; //定义一个临时数组
for(var i = 0; i < arr.length; i++){ //循环遍历当前数组
//对元素进行判断,看是否已经存在hash表中,若存在则跳过,否则存入临时数组
if(!h[arr[i]]){
//存入hash表
h[arr[i]] = true;
//把当前数组元素存入到临时数组中
newArr.push(arr[i]);
}
}
return newArr;
}
方法三:排序,比较相邻两个
var arr = [3, 3, 5, 5, 7, 1, 8, 8];
function removeRepeat(){
//将数组进行排序
this.sort();
//定义结果数组
var newArr=[];
for(var i = 1; i < arr.length; i++){ //从数组第二项开始循环遍历数组
//判断相邻两个元素是否相等,如果相等说明数据重复,否则将元素写入结果数组
if(arr[i] !== newArr[newArr.length - 1]){
newArr.push(this[i]);
}
}
return newArr;
}
方法四:Set对象,[...]解构
var arr = [3, 3, 5, 5, 7, 1, 8, 8];
var mySet = new Set(arr);
var newArr = [...mySet];
方法五:Array.from()方法对一个类似数组或可迭代对象创建一个新的,浅拷贝的数组实例。
var arr = [3, 3, 5, 5, 7, 1, 8, 8];
var mySet = new Set(arr);
var newArr = Array.from(mySet);
上一篇
下一篇