ready
论坛版主
论坛版主
  • UID24
  • 粉丝0
  • 关注0
  • 发帖数403
  • 社区居民
  • 忠实会员
  • 原创写手
阅读:8284回复:3

js找出两个数组中不同的元素

楼主#
更多 发布于:2018-08-18 13:39
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);  
       }  
   }  
ready
论坛版主
论坛版主
  • UID24
  • 粉丝0
  • 关注0
  • 发帖数403
  • 社区居民
  • 忠实会员
  • 原创写手
沙发#
发布于: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>
ready
论坛版主
论坛版主
  • UID24
  • 粉丝0
  • 关注0
  • 发帖数403
  • 社区居民
  • 忠实会员
  • 原创写手
板凳#
发布于: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
ready
论坛版主
论坛版主
  • UID24
  • 粉丝0
  • 关注0
  • 发帖数403
  • 社区居民
  • 忠实会员
  • 原创写手
地板#
发布于: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]));
游客


返回顶部