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);