视频1 视频21 视频41 视频61 视频文章1 视频文章21 视频文章41 视频文章61 推荐1 推荐3 推荐5 推荐7 推荐9 推荐11 推荐13 推荐15 推荐17 推荐19 推荐21 推荐23 推荐25 推荐27 推荐29 推荐31 推荐33 推荐35 推荐37 推荐39 推荐41 推荐43 推荐45 推荐47 推荐49 关键词1 关键词101 关键词201 关键词301 关键词401 关键词501 关键词601 关键词701 关键词801 关键词901 关键词1001 关键词1101 关键词1201 关键词1301 关键词1401 关键词1501 关键词1601 关键词1701 关键词1801 关键词1901 视频扩展1 视频扩展6 视频扩展11 视频扩展16 文章1 文章201 文章401 文章601 文章801 文章1001 资讯1 资讯501 资讯1001 资讯1501 标签1 标签501 标签1001 关键词1 关键词501 关键词1001 关键词1501 专题2001
js数组去重方法汇总
2020-11-27 20:13:00 责编:小采
文档

方法一:

对数组进行先排序,排完序之后在让元素与前一个元素做对比,相同的就去掉,该方法用到的是sort()方法和slice()

var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j'];//对数组先进行排序arr.sort(); for(var i = 0; i < arr.length; i++) { //用当前的元素与他的前一个元素进行对比
 if(arr[i] == arr[i - 1]) { //如果相同的话,就删除掉第i个元素
 arr.splice(i, 1);
 }
 }
 console.log(arr);

方法二:

遍历数组,定义一个新数组,利用indexOf判断是否存在于新数组中,不存在则push到新数组,最后返回新数组

var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j'];function delArr(array){
 var newArr=[];//新建一个新数组
 //遍历参数数组array
 for(var i=0;i<array.length;i++){ //判断新数组是否有这个元素值,没有的话,就把arr[i]给push到新数组newArr中
 if(newArr.indexOf(array[i])===-1){
 newArr.push(arr[i]);
 }
 } return newArr;
 }
 console.log(delArr(arr));

方法三:

利用对象键值对法:新建一js对象以及新数组,遍历传入数组时,判断值是否为js对象的键,不是的话给对象新增该键并放入新数组。

注意点: 判断是否为js对象键时,会自动对传入的键执行“toString()”,不同的键可能会被误认为一样;例如: a[1]、a[“1”] 。解决上述问题还是得调用“indexOf”。

var arr = ['a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j', 'a', 'b', 'c', 'd', 'e', 'f', 'g', 'h', 'j'];function delArr2(array){
 var json={},newArr=[],val,type;
 for(var i=0;i<array.length;i++){ 
 val=array[i]; //判断val是什么数据类型
 type=typeof val;
 console.log("判断类型"+[type]);
 //判断值是否为js对象的键,不是的话给对象新增该键并放入新数组
 if(!json[val]){
 json[val]=[type];
 newArr.push(val);
 } 
 else if(json[val].indexOf(type)<0){
 json[val].push(type);
 newArr.push(val);
 }
 } return newArr;
 }
 console.log(delArr2(arr));

下载本文
显示全文
专题