JS实现数组中每一个元素出现的次数

JS实现数组中每一个元素出现的次数

  一、var arrayObj = [1, 1, 2, 3, 3, 3, 4, 5, 5];

  找出数组中每一个元素出现的次数,我这里简单一下就用for循环来实现。首先先声明几个变量,

  var temp = "";//中间变量,临时存储循环时用来存储数组中的某个元素

  var count = 0;//循环时用来存储数组中的某个元素出现的次数

  var arrNew = new Array(); //新建一个数据用来存放循环后的数据

  

  下面开始循环

  for(var i=0;i<arrayObj.length;i++){

    if(arrayObj[i]!=-1){

      temp=arrayObj[i];

      for(var j=0;j=arrayObj.length;j++){//再次循环数组,用第一次循环得到的temp与数组的每一个元素比较

        if(temp==arrayObj[j]){

            count++;//如果两个元素相同,count就自加一次

            arrayObj[j] = -1;//这个时候临时改变这次循环时元素变量的值,以便不参与下次循环

        }

      }

      arrNew.push(temp + ":" + count);//把这次循环的元素以及出现的次数保存到新的数组中

      count = 0;//让count的值重新等于0

    }

  }

  

  //循环打印新的数组

  for(var i=0;i<arryNew.length;i++){

    alert(arryNew[i]);

  }

  

  二、对于这样数组

  var arr = [

        { "name": "Tom", "age": "10", "gender": "male" },

        { "name": "Lucy", "age": "10", "gender": "female" },

        { "name": "Tony", "age": "11", "gender": "male" },

        { "name": "Jack", "age": "11", "gender": "male" },

        { "name": "Yuanyuan", "age": "12", "gender": "female"}

       ];

  实现的方法和上面的一样只是多了一步,这个我们找按年龄一样的有多少个,首选我们先把年龄都找出来存放在一个数组中。

  var arrayObj=new Array();

  for(var i=0;i<array.length;i++){

    arrayObj.push(arr[i].age);

  }

  接下来就和上面的方法一样了,在此就不再陈述。

  这个只是我的一个朋友问我的一个问题,就做了一下,或许有更好的方法和逻辑来实现。