1.获取数组中相同的元素,应用场景,矩阵单选题全部的答案都不能相同,咱们须要对答案数组进行判断是否有相同的值。数组
// 须要两个参数,一个是判断元素,一个是判断的数组,返回的是这个数组中相同元素数组的个数 function arrSameNums(ele,arr) { var nums=0; for(var i = 0; i < arr.length; i++) { if(arr[i]==ele){ nums++; } } return nums; }
// 判断数组中是否有相同元素,传入数组,有的话返回true,没有返回false function ishaveSameEle(arr) { for(var i = 0; i < arr.length; i++) { var num = 0; var ele = arr[i]; for(var j = 0; j < arr.length; j++) { if(arr[j] == ele) { num++; if(num > 1) { return true; break; } } } } return false; }
2.获得数组中连续相同的最大个数,应用场景,选择题判断的时候,有规定连续几个以上的时候视为无效的答案,这个时候我门把问题的答案放到了一个数组里面,最后判断是否符合要求。个人代码以下,老是感受写法很差。但愿有好的写法能够告知一下,谢谢v17346598520code
function getArrContinuSameNum(ele, arr) { var sameNum = 0; // 保存连续相同的个数 var sameNumArr = []; // 保存全部个数 var arrPre = arr[0]; // 保存上一个数值,用来判断是否连续 for(var i = 0; i < arr.length; i++) { if(arr[i] == ele && arr[i] == arrPre) { // 等于上一个,说明连续了 sameNum++; arrPre = arr[i]; } else { sameNum = 0; arrPre = arr[i]; continue; // 这里的continue是跳出当前循环继续下一次循环,因此上面的从新赋值操做不能拿到外面来赋值 } sameNumArr.push(sameNum); } if(sameNumArr.length > 0) { sameNumArr.sort(function(m, n) { return n - m; }); return sameNumArr[0] + 1; } else { return 0; } }