首页 > 试题广场 >

计数

[编程题]计数
  • 热度指数:79616 时间限制:C/C++ 2秒,其他语言4秒 空间限制:C/C++ 256M,其他语言512M
  • 算法知识视频讲解
统计数组 arr 中值等于 item 的元素出现的次数
示例1

输入

[1, 2, 4, 4, 3, 4, 3], 4

输出

3
推荐
题目本身很简单,有很多实现的方式,循环遍历,正则表达式都可以很容易实现。使用循环遍历,首先声明一个变量count用于计数,forEach循环看起来更加简洁,传入一个匿名方法,接收一个参数e用于传入数组中的每一项,最后用一个三元条件运算符来判断结果,true则执行count++,false则为0,最后返回count。
function count(arr, item) {
     var count = 0;
     arr.forEach(function(e){
         //e为arr中的每一个元素,与item相等则count+1
         e == item ? count++ : 0;
     });
     return count;
 }

编辑于 2015-08-18 21:18:57 回复(12)
更多回答
function count(arr, item) {
return arr.toString().match(new RegExp(item,"g")).length;
}
发表于 2015-07-09 11:07:02 回复(7)
    function count(arr, item){
        var reg = new RegExp(""+item+"","g");
        var arrStr = arr.join("");
        var arrNum = arrStr.match(reg);
        return arrNum.length;
    }
发表于 2017-05-22 10:09:19 回复(0)
function count(arr, item) {
    var index=arr.indexOf(item);//获取出现第一个item的索引号
    var num=0;
    while(index!=-1){//如果索引号不等于-1,证明至少纯在一个item,num++等于1,即item个数为一
        num++;
        index=arr.indexOf(item,index+1);//从第一个item后面一个元素开始再次判断是否还存在item,如果存在则把第二个item的索引号赋值给index,之后再次执行while循环,num++等于2,再次从第二个item后一个元素开始判断是否还存在item,如果不存在其他item则返回-1,结束while循环
    }
    return num;
}
count([1,2,4,4,3,4,3],4);
发表于 2019-05-14 21:27:44 回复(0)
function count(arr, item) {
    let count=0;
    for(let i=0;i<arr.length;i++){
        if(arr[i]==item){
            count++;
        }
    }
    return count;
}

发表于 2022-08-12 21:33:47 回复(0)
用filter过滤出没有item的数组,然后两个数组的长度一减,得出数组 arr 中值等于 item 的元素出现的次数
function count(arr, item) {
    var list = arr.filter(i => {
        return i != item
    })
    return arr.length - list.length
}

发表于 2022-08-02 16:11:49 回复(0)
function count(arr, item) {
    var times = 0;
    for(var i = 0; i < arr.length; i++){
        if(arr[i] == item){
            times++;
        }
    }
    return times;
}
var arr = [1,2,4,4,3,4,3];
var item = 4;
document.write(count(arr,item));
发表于 2022-05-07 00:41:00 回复(1)
        //方法一 利用切割数组加indexOf方式
        //这个方法想到的人 不多
        function count(arr, item) {
            let arr1 = arr;
            let num = 0
            while (arr1.indexOf(item) != -1) {
                arr1 = arr1.splice(arr1.indexOf(item) + 1) // [4, 3, 4, 3]
                num++  //1
            }
        }
        //方法二 使用遍历数组 判断item与数组每一项相等个数
        //使用for循环 forEach filter 都是一个思路
        function count(arr, item) {
            let num = 0
            arr.forEach(i => {
                if (i == item) {
                    num++
                }
                return num
            })
            console.log(num)
        }
发表于 2022-04-20 18:13:06 回复(0)
function count(arr, item) {
    let num = 0;
    arr.forEach(a => {
        if(a === item){
            num++;
        }
    });
    return num;
}

发表于 2022-03-26 17:33:19 回复(0)
//能用forEach就能用map

function count(arr, item) {
    let index=0
    arr.map(ele=>{
        if(ele===item){
          index+=1
         }
        return ele
    })
    return index
}
发表于 2021-10-18 15:53:03 回复(0)
function count(arr, item) {
    var j=0;
for(var i=0;i<arr.length;i++){
    if(arr[i]==item){
        j++;
    }
}
    return j;
}
发表于 2021-07-08 16:58:50 回复(0)
const count = (arr, item) =>{
    const a = arr.filter((value)=>value === item);
    return a.length;
}
发表于 2021-03-03 16:50:17 回复(0)
function count(arr, item) {
    arr1 = arr.slice();
    count = 0;
    a = arr1.indexOf(item);
    while(a != -1){
        count++;
        arr1.splice(a,1);
        a = arr1.indexOf(item);
    }
    return count;
}
发表于 2020-03-24 14:13:11 回复(0)
function count(arr, item) {
    let showNum=arr.filter(val=>{
        return val==item;
    });
    return showNum.length;
}
发表于 2019-12-29 21:20:24 回复(0)
使用while+indexOf
function count(arr, item) {
    var newArr = []
    var index = arr.indexOf(item)
    while(index != -1){
        newArr.push(index)
        index = arr.indexOf(item,index+1)
    }
        //newArr保存item出现的位置,length长度代表item出现的次数
    return newArr.length
}



编辑于 2019-11-29 16:15:28 回复(1)
//首先想到的第一种
function count(arr, item) {
    var sum = 0;
    for(var i = 0; i<arr.length;i++){
        if(arr[i] == item){
            sum++;
        }
    }
     return sum;
}

//其次想到的第二种(这种方法是考虑到其他一些应用)
function count(arr, item) {
    var newArr = [];
    for(var i = 0; i<arr.length;i++){
        if(arr[i] == item){
            newArr.push(arr[i]);
        }
    }
     return newArr.length;
}

编辑于 2019-09-10 18:05:56 回复(0)
function count(arr, item) {
    return arr.filter((value, index) => item === value).length;
}

发表于 2019-09-09 14:16:35 回复(0)
// arr[6] = [1, 2, 4, 4, 3, 4, 3]
// item = 4
// arr[2] = 4,arr[3] = 4,arr[5] = 4
// 故有三个,sum = 3
// 首先要理解题目的意思:有几个arr[i] = item
function count(arr, item) {
    var sum = 0;
    for(var i = 0;i < arr.length;i++){
        if(arr[i] ==item){
            sum = sum+1;
        }
    }
     return sum;
}
发表于 2019-06-11 20:24:19 回复(1)
function count(arr, item) {
let counts =0;
    arr.forEach(v =>{
        v==item&&counts++;
    })
    return counts
}//牛客 不怎么支持es6  在浏览器是可以的
发表于 2017-11-30 12:45:10 回复(0)
function count(arr, item) {
    return arr.filter(function (t) { return t===item }).length;
}
发表于 2017-11-21 15:23:24 回复(1)
function count(arr, item) {
    var i=0;
    for(var a in arr)
    {
        if(arr[a]==item)
        {
            i++;
        }
    }
    return i;
}
alert(count([1, 2, 4, 4, 3, 4, 3], 4));

编辑于 2017-09-07 16:58:01 回复(0)