一、数组去重
1 使用Set的特性:只能有唯一的元素
它类似于数组,但是成员的值都是唯一的、没有重复的,
初始化 Set 可以接受一个数组或类数组对象作为参数,也可以创建一个空的 Set
- 初始化传入要去重的数组,转换成Set类型,
- 再使用...三个点扩展运算符和用数组包起来重新组成新的数组或
使用Array.from(),把类数组转换成数组
function _set(arr) {
var _newSet = new Set(arr);
console.log([..._newSet]); // 或Array.from(_newSet)
}
2 对象key唯一
把数组的值编程对象的key,匹配到就往对应的key中填入值再取出key组成数组
function _obj(arr) {
var obj1 = {};
for (let i = 0; i < arr.length; i++) {
obj1[arr[i]] = 1;
}
console.log(obj1);
var newArr = [];
for(var index in obj1) {
newArr.push(parseInt(index));
}
console.log(newArr);
}
3 使用indexOf()特性
默认从左开始找元素,返回第一个找到的下标,
把每个第一次找到的push到新的数组 完成去重
function _indexOf(arr) {
var newArr = [];
for (let i = 0; i < arr.length; i++) {
if (arr.indexOf(arr[i]) == i) {
newArr.push(arr[i]);
}
}
console.log(newArr);
}
4 利用for循环嵌套
循环让每个元素和别的元素比较
找到了重复的使用splice删除重复元素
注意删除了一个元素后需要"--" 因为删除了元素
function _for_splice(arr) {
for (let i = 0; i < arr.length; i++) {
arr[i];
for (let j = i+1; j < arr.length; j++) {
if (arr[i] === arr[j]) {
arr.splice(j,1);
j--;/* 删除了一个元素同样的j要往回(重复项被删除,后面的补上了,下标不增加 也就是原地再执行一次) */
}
}
}
console.log(arr);
}
5利用sort()
sort( )方法,取出数组里面的元素,默认按照字符编码排序,先比较第一个字符
经过sort()排序后,数组中,重复项就会存在相邻的情况,只要比较所有相邻的是否相同就能完成整个数组去重
function _sort(arr) {
arr = arr.sort();
var newArr = [arr[0]]
for (let i = 1; i < arr.length; i++) {
if (arr[i] !== arr[i - 1]) {
newArr.push(arr[i]);
}
}
return newArr
}
二、字符串去重
2.1 转数组split("") & join()去重再转回来
使用split("") =>转换成数组使用数组的方法去重后再用.join()方法转成字符串这样上方的数组去重方法都可以用(部分情况可用)
2.2 for循环遍历嵌套
var str = "feafuhaskdlhkafgrienf fdsafwekjl;d fdsajg";
//用flag状态是否有重复,重复就不添加进新字符串
_str_for(str)
function _str_for(str) {
var flag = null;
var newStr = "";
var len = str.length;
for (let i = 1; i < len; i++) {
flag = 1
for (let j = 0; j < newStr.length; j++) {
if (newStr[j] === str[i]) {
flag = 0
}
}
if (flag) {
newStr = newStr + str[i];
}
}
console.log(newStr);
return newStr;
}
2.3 indexOf匹配 search同理
function _indexOf(str) {
var newStr = '';
var len = str.length;
for (let i = 0; i <len ; i++) {
if (newStr.indexOf(str[i]) == -1) {
newStr = newStr + str[i]
}
}
return newStr;
}
逆战班