js数组去重、排序、第一次出现没有重复的字母、深度克隆、冒泡排序
1.数组去重
var arr=[1,2,3,3,2,1,5,5,3,5,4,7,6,8,0,0]; Array.prototype.unique=function () { var template={}; var newArr=[]; var len=this.length for (var i = 0; i < len ; i++) { if(!template[this[i]]){ template[this[i]]=' '; newArr.push(this[i]) } } return newArr; } console.log(arr.unique())
2.数组排序
var arr=[0,4,10,11,2,-4,13,3] /* 1.必须写两个形参 2.看返回值 1).返回值为负数时,那么前面的放在前面 2).返回值为整数是,那么后面的放在前面 3).返回值为0时,不变 */ //升序排序 arr.sort(function(x,y){ /*if(x<y){ return -1 }else{ return 1 }*/ return x-y }) //降序排序 arr.sort(function(x,y){ /*if(x>y){ return -1 }else{ return 1 }*/ return y-x })
3.第一次出现没有重复的字母
var str='qwertyyauiticuyvoiubiwqriuewriutyyiuyiureyiuerutipywe'; var obj = {}; for (var i = 0; i < str.length; i++) { var v = str.charAt(i); //获得每个字符 if (obj[v] && obj[v].value == v) { //筛选 obj[v].count = ++obj[v].count; //记录每个重复的字符个数 } else { obj[v] = {}; obj[v].count = 1; obj[v].value = v; } } for (key in obj) { if(obj[key].count==1){ console.log(obj[key].value) break; } }
4.第一次出现没有重复的字母
var str='qeqweqwriuyewtiewuatyewtciweytiduewtypewityewpiweiut'; function strCount(str){ var obj={} for (var i = 0; i < str.length; i++) { if(!obj[str[i]]){ obj[str[i]]=1 }else{ obj[str[i]]=++obj[str[i]] } } for(var i in obj){ if(obj[i]==1){ return i } } } console.log(strCount(str));
5.深度克隆
var obj={ name:'张三', age:18, skill:['javascript','HTML5','CSS3','VUE'], web:{ HTML:'王五', JS:{ name:'张六' } } } function deepClone(origin,targetObj){ var target=targetObj||{}; toStr=Object.prototype.toString; arrStr='[object Array]'; for(var prop in origin){ if(origin.hasOwnProperty(prop)){ if(typeof(origin[prop])=='object' && origin[prop]!=='null'){ if(toStr.call(origin[prop])==arrStr){ target[prop]=[]; }else{ target[prop]={}; } deepClone(origin[prop],target[prop]) }else{ target[prop]=origin[prop] } } } return target; } var obj1={}
var newObj= deepClone(obj,obj1) console.log(newObj)
6.冒泡排序
function bubbleSort(arr) { var len = arr.length; for (var i = 0; i < len; i++) { for (var j = 0; j < len - 1 - i; j++) { if (arr[j] > arr[j+1]) { var temp = arr[j+1]; arr[j+1] = arr[j]; arr[j] = temp; } } } return arr; }