js片段

作者: 叫我徐小星 | 来源:发表于2019-02-27 11:32 被阅读2次

1.完成一个类Box,实例化的时候给他传入一个数组,使Box的实例支持for in循环;

class Box{
    constructor(array) {
        // 判断传入的是否是数组
        if(Array.isArray(array)){
            this.arr = array;// ...
        }else{
            this.arr = [];
        }
    }

    toCircle() {
        for(var i=0; i< this.arr.length; i++){
            console.log(this.arr[i]);
        }
    }
}
var a = new Box([1,2,3])
a.toCircle();

注:判断obj是否是数组的几种方法
1.Array.isArray(obj);调用数组的isArray方法
2.obj instanceof Array;判断对象是否是Array的实例
3.Object.prototype.toString.call(obj) ===‘[object Array]’;
Object.prototype.toString方法会取得对象的一个内部属性[[Class]],然后依据这个属性,返回一个类似于[object Array]的字符串作为结果,call用来改变toString的this指向为待检测的对象
4.obj.constructor===Array;判断obj的原型链上是否有array方法

2.JS判断数组或者一个字符串中出现次数最多的元素及其出现的次数

思路:
1.将该数组或字符串转换成json对象,键为元素内容,值为出现次数;如:[1,2,2,3,3,]变为{'1':1,'2':2,'3':2}
2.对转换后的对象进行遍历,值最大的键值对即为出现次数最多的元素和次数
function maxCountElement(arr) {  
   var obj={};
    // 数组转换成json
   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);

相关文章

网友评论

      本文标题:js片段

      本文链接:https://www.haomeiwen.com/subject/juauyqtx.html