方式1
var RepeatArr = [2, 2, 2, 3, 4, 5, 6, 6, 5, 6, 7, 6, 6, 45, 46];
function removeRepeat(arr) {
//Set 与数组类似, Set 集合中的元素不重复
return [...new Set(arr)];
}
console.log(removeRepeat(RepeatArr)); //(8)?[2, 3, 4, 5, 6, 7, 45, 46]
方式2
var RepeatArr = [2, 2, 2, 3, 4, 5, 6, 6, 5, 6, 7, 6, 6, 45, 46];
function removeRepeat(arr){
var newArr = []
for(var i = 0 ; i < arr.length ; i++){
for(var j = i+1 ; j < arr.length ; j++){
if(arr[i] === arr[j]) { //如果有重复就 i++进行下一次循环
i++
}
}
// 没有相等就追加
newArr.push(arr[i])
}
return newArr
}
console.log(removeRepeat(RepeatArr)); //(8)?[2, 3, 4, 5, 6, 7, 45, 46]
方式3
var RepeatArr = [2, 2, 2, 3, 4, 5, 6, 6, 5, 6, 7, 6, 6, 45, 46];
// 数组是否包含某个元素
// newArr.indexOf(key) == -1 不包含-1 包含返回下标
// newArr.includes(key) 不包含false 包含true
function removeRepeat(arr){
var newArr = []
for(var key of arr){
// if( newArr.indexOf(key) == -1 ){
// newArr.push(key)
// }
// 新数组不存在key就追加进去
if( !newArr.includes(key)){
newArr.push(key)
}
}
return newArr
}
console.log(removeRepeat(RepeatArr)); //(8)?[2, 3, 4, 5, 6, 7, 45, 46]
方式4
var RepeatArr = [2, 2, 2, 3, 4, 5, 6, 6, 5, 6, 7, 6, 6, 45, 46];
// 判断数组第一次出现的位置是不是和index一致
// 第二次出现还会显示第一次出现的下标,但是index会按循环的改变,就不相等了
function removeRepeat(arr) {
var newArr = arr.filter((item, index) => {
return arr.indexOf(item) === index;
});
return newArr;
}
console.log(removeRepeat(RepeatArr)); //(8)?[2, 3, 4, 5, 6, 7, 45, 46]
方式5
var RepeatArr = [2, 2, 2, 3, 4, 5, 6, 6, 5, 6, 7, 6, 6, 45, 46];
// reduce累计判断
function removeRepeat(arr) {
var newArr = arr.reduce((pre, item) => {
// 判断累计数组中是否包含item项,包含就返回之前数组,不包含就把item添加
return pre.includes(item) ? pre : [...pre, item];
}, []);
return newArr;
}
console.log(removeRepeat(RepeatArr)); //(8)?[2, 3, 4, 5, 6, 7, 45, 46]
方式6
var RepeatArr = [2, 2, 2, 3, 4, 5, 6, 6, 5, 6, 7, 6, 6, 45, 46];
function removeRepeat(arr) {
var newArr = {};
arr.forEach((item) => {
newArr[item] = "a";
});
// 转成对象key不会重复,会覆盖重复的key
// newArr => //{2: 'a', 3: 'a', 4: 'a', 5: 'a', 6: 'a', 7: 'a', 45: 'a', 46: 'a'}
// 获取key组成的数组
// Object.keys(newArr) //?['2', '3', '4', '5', '6', '7', '45', '46']
// 在把数组每一项转为数值
return Object.keys(newArr).map((item) => parseInt(item)); //?[2, 3, 4, 5, 6, 7, 45, 46]
}
console.log(removeRepeat(RepeatArr)); //(8)?[2, 3, 4, 5, 6, 7, 45, 46]
方式7
var RepeatArr = [2, 2, 2, 3, 4, 5, 6, 6, 5, 6, 7, 6, 6, 45, 46];
function removeRepeat6(arr){
var newArr = []
//先排序
var sortarr = arr.sort()
//在循环比较,前一个不等于后者就追加到新数组,相等就重复
for(var i = 0 ; i < sortarr.length ; i++){
if(sortarr[i] !== sortarr[i+1]){
newArr.push(sortarr[i])
}
}
return newArr
}
console.log(removeRepeat(RepeatArr)); //(8)?[2, 3, 4, 5, 6, 7, 45, 46]
还有很多方式,不一一列举啦!!!
|