阅读:9406回复:3
js找出两个数组中不同的元素
function arr(array,array2){
var arr3 =[]; for (key in array) { var stra = array[key]; var count = 0; for(var j= 0; j < array2.length; j++){ var strb = array2[j]; if(stra == strb) { count++; } } if(count===0) {//表示数组1的这个值没有重复的,放到arr3列表中 arr3.push(stra); } } |
|
沙发#
发布于:2018-08-18 13:47
js 算出Array数组中出现次数最多的元素 <script type="text/javascript"> var array = new Array(4, 5, 4, 7, 8, 4, 2, 67, 5, 89, 5, 67); var count = 1; var yuansu= new Array(); //存放数组array的不重复的元素比如{4,5,7,8,2,67,89,} var sum = new Array(); //存放数组array中每个不同元素的出现的次数 for (var i = 0; i < array.length; i++) { for(var j=i+1;j<array.length;j++) { if (array == array[j]) { count++; //用来计算与当前这个元素相同的个数 array.splice(j, 1); //没找到一个相同的元素,就要把它移除掉, j--; } } yuansu = array; //将当前的元素存入到yuansu数组中 sum = count; //并且将有多少个当前这样的元素的个数存入sum数组中 count =1; //再将count重新赋值,进入下一个元素的判断 } var str = ''; //算出array数组中不同的元素出现的次数 for (var i = 0; i < yuansu.length; i++) { str+=yuansu+"出现的次数为:"+sum+" "; } document.write(str); //算出array数组中出现次数最多的两个元素 var newsum = new Array(); // sum; for (var item in sum) { newsum[item] = sum[item]; } newsum.sort(); //document.write(sum.toString()+" "); //document.write(newsum.toString() + " "); var first = ''; //存放出现次数最多的元素,以及个数 var second = ''; //存放出现次数居第二位的元素,以及个数 var fcount = 1; //计算出现次数最多的元素总共有多少个 //算出出现次数最多的元素及个数 document.write(" "); for (var i = 0; i < sum.length; i++) { if (sum == newsum[newsum.length - 1]) { //document.write("出现次数最多的元素是:" + yuansu + "次数为:" + sum + " "); first += "出现次数最多的元素是:" + yuansu + "次数为:" + sum + " "; fcount++; } } //算出出现次数居第二位的元素及个数 for (var i = 0; i < sum.length; i++) { if (sum == newsum[newsum.length - fcount]) { //document.write("出现次数居第二位的元素是:" + yuansu + "次数为:" + sum + " "); second += "出现次数居第二位的元素是:" + yuansu + "次数为:" + sum + " " } } document.write("出现次数最多的元素有"+(fcount-1)+"个 "+first+" "+second); </script> |
|
板凳#
发布于:2018-08-18 13:54
★js统计一个字符串出现最多的字母(或者数组中出现次数最多的元素) //字符串 var strs = "asdasdadd"; function getmaxstr(str){ if(str.length == 1){return str;} var newarr = []; for(var i = 0 ; ss= str.length, i<ss; i++ ){ if(!newarr[str.charAt(i)]){ newarr[str.charAt(i)] = 1; }else{ newarr[str.charAt(i)] +=1; } } console.log(newarr); var maxkey=''; var maxvalue=1;//设定一个值 for(var k in newarr){ if(newarr[k]> maxvalue){//根据这个值做判读 将数组中的每个元素 与这个值做比较! 如果大于他,那么将住宿 maxvalue = newarr[k];//出现的次数 maxkey = k;//次数最多的 字母 } } console.log(maxkey); return maxvalue; } getmaxstr(strs); //数组 var arr =["a","b","c","c","c","d"]; Array.prototype.diaohuan=function(arr){ var newarr=[]; for(var i = 0; i<this.length; i++){ if(!newarr[this] ){ newarr[this] = 1; }else{ newarr[this] +=1; } } console.log(newarr); var maxkey = 1; var maxvalue =""; for (var k in newarr){ if(newarr[k] > 1){ maxvalue =newarr[k]; maxkey = k; } } return maxvalue; console.log(maxvalue); } alert(arr.diaohuan()); 函数的结构差不多,实际都是对数组的处理 一个主要的思路:新建一个空的数组newarr!将要处理的数组(字符串转成数组)的元素做为键 存入新数组, 根据键的唯一做判断,如果新数组newarr中没有这个键,那么就存入,并给 值 为1, 如果新数组newarr中 有 这个键了,那么将该 键 对应的值 +1;。 然后 :对新数组newarr 取最大值!并获取当前的索引,即可得到!! 用到的知识点: 1、charAt()函数:返回指定位置 长度为 1 的字符, stringObject.charAt(index) index必需。表示字符串中某个位置的数字,即字符在字符串中的下标。 字符串中第一个字符的下标是 0。如果参数 index 不在 0 与 string.length 之间,该方法将返回一个空字符串; 例如: var str="Hello world!" document.write(str.charAt(1)) 输出 e 2、 for in 循环 用 for-in 来遍历一遍数组的内容 例如: const arr = [1, 2, 3]; let index; for(index in arr) { console.log("arr[" + index + "] = " + arr[index]); } //结果 arr[0] = 1 arr[1] = 2 arr[2] = 3 还可以遍历对象 例如: const person = { fname: "san", lname: "zhang", age: 99 }; let info; for(info in person) { console.log("person[" + info + "] = " + person[info]); } //结果 person[fname] = san person[lname] = zhang person[age] = 99 |
|
地板#
发布于:2018-08-18 13:57
常用技巧之JS判断数组中某元素出现次数
function arrCheck(arr){ var newArr = []; for(var i=0;i<arr.length;i++){ var temp=arr; var count=0; for(var j=0;j<arr.length;j++){ if(arr[j]==temp){ count++; arr[j]=-1; } } if(temp != -1){ newArr.push(temp+":"+count) } } return newArr; } arrCheck([1,2,3,3,4]); 重点有三个: 1,通过嵌套for循环,把数组的每一项,跟整个数组中的所有项,比较一遍; 2,通过if判断,如果有相等的项,count++,并把相等的项置为-1,这样可以判断等于-1的就是重复的,就不再加入新数组了; 3,用if判断!=-1,决定是否加入新数组中,返回。 console.log(arrCheck([1,2,3,3,4])); |
|