数组去重
创新互联-专业网站定制、快速模板网站建设、高性价比黔江网站开发、企业建站全套包干低至880元,成熟完善的模板库,直接使用。一站式黔江网站制作公司更省心,省钱,快速模板网站建设找我们,业务覆盖黔江地区。费用合理售后完善,10多年实体公司更值得信赖。
(1)
思路:利用一个函数中for遍历查找出重复元素,有则返回turn,如果全部备遍历完后没则返回false
利用另一个函数判断上一个返回的值
方法:
//去重
//遍历一遍找出重复元素
//方法是:将新数组与原数组进行对比,第一次出现就添加到新数组里,否则就不进行操作。
function has(arra,val){//是否有重复的数值,存在返回turn,否则false
for(let i=0,len=arra.length;ilen;i++){
if(arra[i]===val)//存在
return true;
}
return false;
}
function strOne(array){
var newArray = [];
for(var i in array){
if(!has(newArray,array[i]))
newArray.push(array[i]);
}
return newArray;
}
console.log(strOne(arr));
(2)(es6新增)
方法:
function dedupe(array){
return Array.from(new Set(array));
}
console.log(dedupe(arr));
(3)
方法:
function de_weight (array){
var newArray = [];
for(let i=0,len=array.length;ilen;i++){
for(let j=i+1;jlen;j++){
if(array[i]===array[j])
j=++i;
}
newArray.push(array[i]);
}
return newArray;
}
(4)
方法:
//利用对象来给数组去重
var arr = [12,1,1,12,45,2,3,45,5,6,7,89,9,9,89,1,1,1];
var conet = {};
for(let i=0,len=arr.length;ilen;i++){
conet[arr[i]] = arr[i];
}
console.log(Object.values(conet));
字符串去重:
(1)
var str = "dwqewdfsafdfwqewdsadsa";
var strArray = [],newArray=[];
console.log(str.charAt(4));
console.log(str.length);
for(let i=0,len=str.length;ilen;i++){
strArray[i] = str.charAt(i);
}
console.log(strArray);
for(let i=0,len=strArray.length;ilen;i++){
for(let j=i+1;jlen;j++){
if(strArray[i]===strArray[j]){
j=++i;
}
}
newArray.push(strArray[i]);
}
console.log(newArray);
str = "";
for(let i=0,len=newArray.length;ilen;i++){
str += newArray[i];
}
console.log(str);
(2)
/**
*思路:对象不会获取相同的属性,从而将属性与属性值对应,拿出属性值,组成新的数组
*/
var str = "dwqewdfsafdfwqewdsadsa";
var conet ={};
for(let i=0,len=str.length;ilen;i++){
conet[str.charAt(i)] = str.charAt(i);
}
let string = Object.values(conet);//获取对象里的对应的值
console.log(typeof string);
console.log(string);
string = string.join("");//将数组对象转换变成字符串
console.log(string);
一种高效算法的大概思想:
设置一个循环用来遍历数组,一个慢一步,,一个快一步,当到了数组末尾或者快的与慢的下标对应的元素相等就退出,,退出循环后再检测“快的与慢的下标对应的元素相等”这一条件,如果是就说明有重复元素。否则没有。
在使用Go语言的时候,碰到了需要对数组进行去重操作的问题。Java语言有Set集合这个数据结构,可以很方便的将数组转为集合,但是Go语言没有Set,如果仅仅是因为去重操作就手动实现一个Set太繁琐了。可以根据Go语言中的map的特性来简单实现一下
这个是对字符串数组去重操作。可以根据需要的类型稍作修改即可。需要注意的是只支持可以作为map键的结构进行去重!