一、嵌套双层for循环
1.取到数组第一个元素,
2.将取到的元素与后一个元素对比是否相同,
3.1相同则使用数组splice方法删除,(j,1) j为删除的下标,1为删除的个数,删除后数组长度减一,此时下标为j的位置的元素变成了一个之前j下标的后一个元素,需要再对现在j下标的元素进行对比,即重复此步骤
3.2不相同则j+1,向后继续遍历对比,对比相同则重复步骤3.1
4.第一个元素与后元素对比结束,此时已经删除与第一个元素相同的元素,然后取到此时循环结束后的第二个元素
5.重复步骤2至此步骤,直到i循环最后一位结束for循环
6.对要执行的数组调用此方法并输出,就能得到已经去重后的数组
var arr = [1, 2, 2, 2, 4, 2, 'hello', 1, 3, 'hello'];
function unique(arr){
for(var i = 0; i < arr.length; i++){
for(var j = i + 1; j < arr.length; j++){
if(arr[i] == arr[j]){
arr.splice(j,1);
j--;
}
}
}
}
unique(arr);
console.log(arr);
二、indexOf()/lastIndexOf()方法
1.创建一个空数组newArr[]
2.for循环遍历数组对象
3.内部判断语句,使用indexOf()/lastIndexOf()判断newArr数组里是否有arr数组里下标为i的这个元素,判断是否有相同的值,没有就返回-1,
4.1判断为-1时,意为找不着,即newArr数组里没有这个元素,那么使用push方法将这个没有的元素存入newArr数组中,继续循环
4.2判断结果不为-1时,即有相同值得元素,那么继续向后寻找判断(lastIndexOf()是从后向前找)
5.循环结束后,返回存好数的数组newArr
6.对要执行的数组调用此方法并输出,就能得到已经去重后的数组
(indexOf()方法)
var arr = [1, 2, 2, 2, 4, 2, 'hello', 1, 3, 'hello'];
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++){
if(newArr.indexOf(arr[i]) === -1) {
newArr.push(arr[i])
}
}
return newArr
}
console.log(unique(arr));
(lastIndexOf()方法)
var arr = [1, 2, 2, 2, 4, 2, 'hello', 1, 3, 'hello'];
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++){
if(newArr.lastIndexOf(arr[i]) === -1) {
newArr.push(arr[i])
}
}
return newArr
}
console.log(unique(arr));
三、include方法
1.创建空数组newArr[]
2.使用for循环,遍历数组里每一个元素
3.使用判断语句if,判断newArr[]里是否包含这个元素
4.1当newArr[]数组里不包含这个元素时,返回false,并将这个不包含的元素使用push方法输入到newArr中,可以使用 ===false 来判断,也可在判断语句最前方使用!取反,而判断语句if需要判断为真时,才会执行语句,push存入数组,继续循环
4.2.当newArr[]数组里不包含这个元素,那么不执行判断语句内容,继续循环
5.循环结束后,返回存好数的数组newArr
6.对要执行的数组调用此方法并输出,就能得到已经去重后的数组
var arr = [1, 2, 2, 2, 4, 2, 'hello', 1, 3, 'hello'];
function unique(arr) {
var newArr = [];
for (var i = 0; i < arr.length; i++){
if (!newArr.includes(arr[i])) {
newArr.push(arr[i]);
}
}
return newArr;
}
console.log(unique(arr));
四、forEach + indexOf 方法
1.建立新数组newArr[]
2.使用forEach()方法遍历数组,item为每一个数组元素
3.使用判断语句if,判断条件为:使用indexOf()方法判断数组newArr()里是否有这个元素,
4.1当结果为-1时,则数组中没有该元素,执行条件语句,将元素push存入newArr数组中,继续循环
4.2当结果不为-1时,即查找到数组内有相同元素,不执行push,并继续循环
5.循环结束后,返回存好数的数组newArr
6.对要执行的数组调用此方法并输出,就能得到已经去重后的数组
var arr = [1, 2, 2, 2, 4, 2, 'hello', 1, 3, 'hello'];
function unique(arr) {
var newArr = [];
arr.forEach(function(item) {
if(newArr.indexOf(item) === -1){
newArr.push(item)
}
})
return newArr;
}
console.log(unique(arr));
五、set方法去重
因为set方法使得数组元素具有唯一性,会自动去除其他相同的数组元素
var arr=[1,2,3,3,2,'hello','hello'];
var set=new Set(arr);
console.log(Array.from(set));