首页 > 试题广场 >

计数

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

输入描述:
[1, 2, 4, 4, 3, 4, 3], 4


输出描述:
3
示例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) {
    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) {
    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)
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)
使用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)
function count(arr, item) {
    var num = 0;
	for (i = 0;i < arr.length; i++){
        if(arr[i] == item){
            num++;
        }
    }
    return num;
}
//直接for循环,简单粗暴。。
编辑于 2017-08-05 17:24:18 回复(1)
function count(arr, item) {
	var num = 0;
    for(var i=0;i<arr.length;i++){
        if(arr[i]===item){
            num++;
        }
    }
    return num;
}

测试通过!

发表于 2017-04-10 14:16:15 回复(0)
function count(arr, item) {
    var count = [];
    var pos = arr.indexOf(item);
    while(pos > -1){
        count.push(pos);
        pos= arr.indexOf(item, pos+1);
    }
    return count.length
}

发表于 2017-03-15 14:30:03 回复(1)
function count(arr, item) 
{
    var sum = 0;
    for(var i=0;i<arr.length;i++)
        if(arr[i] == item)
            sum++;
    
    return sum;
}
发表于 2017-02-17 18:52:11 回复(0)
function count(arr, item) {
    var count = {};
    var len = arr.length;
    for(var i = 0; i < len; i++){
        if(!count[arr[i]]){
            count[arr[i]] = 1;
        }else{
            count[arr[i]]++;
        }
    }
    var res = count[item];
    return res;
}

发表于 2016-08-07 14:32:15 回复(0)
function count(arr, item) {
    var num = 0;
    for(var i = 0; i < arr.length; i++){
        if(arr[i] == item){
            num++;
        }
    }
    return num;
}

发表于 2016-04-15 16:09:07 回复(4)
将看到的几种方法进行归纳
//filter()-->利用指定的函数确定是否在返回的数组中包含某一项
		function count(arr, item) {
			var count = arr.filter(function(a) {
				return a === item;   //返回true的项组成的数组
			});
			return count.length;
		}
		//map()-->对数组中的每一项进行给定函数,
		//返回每次函数条用的结果组成的数组;
		function count(arr, item) {
			var count = 0;
			arr.map(function(a) {
				if(a === item) {
					count++;
				}
			});
			return count;
		}
		//for循环
		function count(arr, item) {
			var count = 0;
			for(var i=0; i<arr.length; i++) {
				if(arr[i] === item) {
					count++;
				}
			}
			return count;
		}
		//reduce()-->从数组的第一项开始,逐个遍历到最后;
		function count(arr, item) {
			var count = arr.reduce(function(prev, curr) {
				return curr === item ? prev+1 : prev;
			}, 0);
			return count;
		}
                //forEach()-->对数组中的每一项运行传入的函数
		function count(arr, item) {
			var count = 0;
			arr.forEach(function(a) {
				a === item ? count++ : 0;
			});
			return count;
		}

编辑于 2016-09-12 23:38:47 回复(9)