去掉一个数组中的重复项,并按升序排序

去掉一个数组中的重复项,并按升序排序

方法1:indexOf()

function removeRepeat(arr){
    let result = []
    for(var i=0;i<arr.length;i++){
        if(result.indexOf(arr[i]) == -1){
            result.push(arr[i])
        }
    }
    return result.sort(function(a,b){
        return a-b   // 升序排列
        // return b-a   // 降序排列
    })
}

var testArr = [2,5,6,11,45,6,9,2]
var resultArr = removeRepeat(testArr)
console.log(resultArr)   // [2, 5, 6, 9, 11, 45]

indexOf() 方法可返回数组中某个指定的元素的下标位置。

该方法将从头到尾地检索数组,看它是否含有对应的元素。如果找到一个指定元素,则返回指定元素第一次出现的位置。如果在数组中没找到指定元素则返回 -1。开始位置的索引为 0。

方法2:includes()

function removeRepeat(arr){
    let result = []
    for(var i=0;i<arr.length;i++){
        if(!result.includes(arr[i])){
            result.push(arr[i])
        }
    }
    return result.sort(function(a,b){
        return a-b   // 升序排列
        // return b-a   // 降序排列
    })
}

var testArr = [2,5,6,11,45,6,9,2]
var resultArr = removeRepeat(testArr)
console.log(resultArr)

includes() 方法用来判断一个数组是否包含一个指定的值,如果包含返回 true,否则返回false。

方法3:ES6方法,使用set去重

function removeRepeatBySet(arr){
    let result = [...new Set(arr)]
    return result.sort(function(a,b){
        return a-b   // 升序排列
        // return b-a   // 降序排列
    })
}

var testArr = [2,5,6,11,45,6,9,2]
var resultArr = removeRepeatBySet(testArr)
console.log(resultArr)

方法4:

function removeRepeatBySet(arr){
    let result = []
    var obj = {};
    for(var i = 0 ;i< arr.length;i++){
   		if( !obj[arr[i]] ){
      		obj[arr[i]] = 1;
      		result.push(arr[i]);
   		}
	}
    return result.sort(function(a,b){
        return a-b   // 升序排列
        // return b-a   // 降序排列
    })
}

var testArr = [2,5,6,11,45,6,9,2]
var resultArr = removeRepeatBySet(testArr)
console.log(resultArr)

方法5: filter数组过滤

function removeRepeatBySet(arr){
    let result = arr.filter(function(item,index,array){
		return array.indexOf(item) === index;
	});
    return result.sort(function(a,b){
        return a-b   // 升序排列
        // return b-a   // 降序排列
    })
}

var testArr = [2,5,6,11,45,6,9,2]
var resultArr = removeRepeatBySet(testArr)
console.log(resultArr)
  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值