第一种方法:先排序,然后第一个数字跟第二个数字相比,如果相等就删除一个。循环
let str = [ ]; //创建一个空数组
arr.sort((a, b) => a - b)
for (let i = 0; i < arr.length; i++) {
if (arr[i] == arr[i + 1]) {
arr.splice(i, 1)
i--
} else {
str.push(arr[i])
}
}
第二种方法:利用顺序和倒序的方法,验证数字的下标是否相等,如果相等表示没有重复。
for (let i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) != arr.lastIndexOf(arr[i])) { // arr[i]:表示第几个数 ,indexOf(arr[i])表示第 i 个数的下标
arr.splice(i, 1);
i--;
}
}
第三种:先排序,然后利用前一个数,减后一个数,判断值为多少。等于0。表示有重复。
arr.sort((a, b) => a - b)
for (let i = 0; i < arr.length; i++) {
for (let j = i + 1; j < arr.length; j++) {
if (arr[i] - arr[j] == 0) {
arr.splice(j, 1);
i--;
}
}
}
第四种:利用indexOf 的查找功能,如果里面没有那个数。会返回一个值 -1。同时将没有的那个数加到新数组
let newArr = [ ]; // 创建一个新的数组
for (let i = 0; i < arr.length; i++) {
if (newArr.indexOf(arr[i]) == -1) { // arr[i]( item 相等 ):表示arr数组里面的第 i 个数。 indexOf 会有索引值,
索引值就是查找数的下标。
newArr.push(arr[i]); // 查找不到就返回-1
}
}
第五种方法:利用筛选功能,如果是true 就会有一个返回值。
let newArr = arr.filter((item,index)=>arr.indexOf(item)==index)
//arr.indexOf(item):表示item的下标,index表示的也是下标
// 当有重复的值时,数字的下标跟他本身的下标一定不会相等。就是flase
//如果是true 值,会返回给 newArr 数组
最常用的方法:利用Set 直接去掉重复的
let arr = [1,2,3,5,2,6,5,3,4,5,6];
let s = new Set(arr); // 将数组放进Set 里面,进行去重 构造函数
console.log(s);
let newArr = [...s]; //Set 对象结构,转换为数组
console.log(newArr); // [1,2,3,4,5,6]