1、取数组或字符串出现最多的几个元素和出现的次数
function fn(arr,rank,rankType){
let [obj,resArr,theRank] = [{},[],rank || arr.length];
for(let i = 0;i<arr.length;i++){
if(obj[arr[i]]){
obj[arr[i]]++;
}else{
obj[arr[i]] = 1;
}
}
for(let o in obj){
resArr.push({ele:o,count:obj[o]});
}
resArr.sort((n1,n2) => {
return n2.count - n1.count;
})
if(rankType === 'up'){
resArr.reverse();
}
return resArr.splice(0,theRank);
}
fn(arr,3,'down');//传入一个数组或字符串,取降序前三名,降序(如果为up则为升序)
2、筛选数组不需要项
function fn(arr,val,type){
return arr.filter((item) => {
return type ? item.toString().indexOf(val) === -1 : item.toString() !== val.toString();
})
}
fn(arr,val,type);
//第一个参数为数组,第二个值为筛选项,第三个为true时参考下方
//type是true 最后返回在item字符串中没有找到val值的数组
//type为false 最后返回item与val值不等的数组
3、数组扁平化
function fn(arr){
let newArr = [];
for(let i = 0;i<arr.length;i++){
if(Array.isArray(arr[i])){
//如果arr[0] = [1,2]此句就相当于newArr.push(1,2)
newArr.push.apply(newArr,fn(arr[i]));
}else{
newArr.push(arr[i]);
}
}
return newArr;
}
fn(arr);