var arrCF = [];
for (var i = 0; i < 20; i++) {
arrCF.push(parseInt(Math.round(Math.random() * 10)));
}
console.log(arrCF);
var arrFL = {};
for (var i = 0; i < arrCF.length; i++) {
var n = arrCF[i];
if (arrFL[n]) {
arrFL[n]++;
} else {
arrFL[n] = 1;
}
}
console.log(arrFL);
var objZD;
for (var shuxing in arrFL) {
if (!objZD || arrFL[shuxing] > objZD.count) {
objZD = {
number: shuxing,
count: arrFL[shuxing]
}
}
}
解析:
arrCF 用于存放随机数的数组,Math.round()用于随机数平衡, 创建一个对象,属性名标记存放的数字,属性值用来标记存放的次数,循环遍历随机数组成的数组,n = arrCF[i]; 当前数组的元素,arrFL[n] 表示数组元素为属性名,arrFL[]表示调用属性,[]中有值,转化成boolean为true 没有值表示undefined转化成boolean为false,如果查找到属性值,就把值为数组元素的属性++1(1),如果没有查找到,就把这个用元素值所代表的属性值添加到arrFL对象中,循环完成即可得到一个,属性名为元素种类,属性值为元素个数的对象, 题目需要我们获取出现次数最多的属性, 定义一个对象 没有初始化,用来表示次数最多的属性和属性值,因为属性对象的表示不能使用for循环 ,这里使用for in, 循环遍历对象arrFL, arrFl[shuxing]分别表示,