我有一个由以下组成的元素数组:
timeArray = [];
$('.time_select').each(function(i, selected) {
timeArray[i] = $(selected).val();
});
其中.time_select
是一组不同HTML选择标记的类。
我想要做的是计算timeArray
中特定值出现的次数。奇怪的是,我还没有找到任何简洁的解决方案......当然有一种简单的方法可以做到这一点吗?
答案 0 :(得分:11)
我应该尝试使用(未充分利用的)$.each()
函数将其抽象为函数。
function countElement(item,array) {
var count = 0;
$.each(array, function(i,v) { if (v === item) count++; });
return count;
}
然后你可以像这样使用它:
var a = ['foo','bar','foo'];
var b = countElement('foo',a); // should return 2
答案 1 :(得分:5)
timeArray = [];
occurs = {};
$('.time_select').each(function(i, selected) {
timeArray[i] = $(selected).val();
if (occurs[timeArray[i]] != null ) { occurs[timeArray[i]]++; }
else {occurs[timeArray[i]] = 1; }
});
答案 2 :(得分:1)
JS没有很多用于处理数组的内置函数。这很简洁:
var count = 0;
for (var i = 0; i < timeArray.length; i++) {
count += (timeArray[i] == targetValue);
}
如果您愿意承担额外库的开销,那么underscore.js会提供许多方便的实用程序功能。使用underscore.js,上面的代码可以简化为:
_(timeArray).reduce(function(m, num) {return m + (num == targetValue);}, 0);
答案 3 :(得分:0)