var arr0 = [1,3,3,3,4,4,4,4,5,5];
var arr1 = [10,9,2,5,7,34,65,48,90,103]; var newArr=[]; /* for(var i=0;i<arr.length;i++){ newArr.indexOf(arr[i])<0 && (newArr.push(arr[i])); } */ // newArr = Array.from(new Set(arr)); // 快速排序 function quikSort(arr){ if(arr.length<=1)return arr; var midIndex = Math.floor(arr.length/2); var midVal = arr.splice(midIndex,1)[0]; var leftArr = []; var rightArr = []; for (var val of arr){ if(val<midVal){leftArr.push(val)}else{rightArr.push(val)} } /* for(var k=0;k<arr.length;k++){ if( arr[k]<midVal ){ leftArr.push(arr[k]) }else{ rightArr.push(arr[k]) } } */ return quikSort(leftArr).concat(midVal,quikSort(rightArr)); } console.log( quikSort(arr1) );
数组中出现重复元素最多的:
function maxCountElement(arr) { var obj={}; for(var i=0;i<arr.length;i++){ var key=arr[i]; if(obj[key]){ obj[key]++; }else{ obj[key]=1; } } var maxCount=0; var maxElement=arr[0]; for(var key in obj){ if(maxCount<obj[key]){ maxCount=obj[key]; maxElement=key; } } return "该数组中出现次数最多的元素:"+maxElement+"出现了"+maxCount+"次"; }
对象深拷贝:
function deepCopy(obj) { var result = Array.isArray(obj) ? [] : {}; for (var key in obj) { if (obj.hasOwnProperty(key)) { if (typeof obj[key] === 'object') { result[key] = deepCopy(obj[key]); //递归复制 } else { result[key] = obj[key]; } } } return result; }
注: 上面的代码有一点小的瑕疵,如果数组中两个不同的元素出现的次数一样多,结果只会体现第一次遇见的次数最多的 元素,和它次数一样多的其他元素会被忽略掉。
改进方案代码如下:
function maxCountElement(arr) { var obj={}; for(var i=0;i<arr.length;i++){ var key=arr[i]; if(obj[key]){ obj[key]++; }else{ obj[key]=1; } } var maxCount=0; var maxElement=arr[0]; var eq = []; for(var key in obj){ if(maxCount < obj[key]){ maxCount=obj[key]; maxElement=key; eq.length=0; }else if(maxCount === obj[key]){ eq.push(key); } } if(eq.length > 0){ for(var j=0;j<eq.length;j++){ maxElement+=','+eq[j]; } } return "该数组中出现次数最多的元素:"+maxElement+"-----出现了:"+maxCount+"次"; } var arr = [1,2,2,3,3,4,5,6]; var res = maxCountElement(arr); console.log(res);