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);
网友评论