Javascript 使用jquery统计数组的出现次数
鉴于我希望结果是:Javascript 使用jquery统计数组的出现次数,javascript,jquery,arrays,Javascript,Jquery,Arrays,鉴于我希望结果是: count = ["Inprocess" : 2, "Hired" : 1, "Rejected" : 1] 请帮助。对于一个窗口。状态是窗口的一个属性,对于两个窗口,您似乎混淆了数组符号和对象符号。我也不知道为什么当数组中只有一个这样的项目时,你会得到“拒绝:3” 我建议将代码包装在函数中,使“status”变量具有局部作用域(或者更好的是,将其作为参数传递给函数),然后使用哈希表对每个数组元素的出现次数进行计数,最后通过该对象将计数结果作为数组返回。类似于 count
count = ["Inprocess" : 2, "Hired" : 1, "Rejected" : 1]
请帮助。对于一个
窗口。状态
是窗口
的一个属性,对于两个窗口,您似乎混淆了数组
符号和对象
符号。我也不知道为什么当数组中只有一个这样的项目时,你会得到“拒绝:3”
我建议将代码包装在函数中,使“status”变量具有局部作用域(或者更好的是,将其作为参数传递给函数),然后使用哈希表对每个数组元素的出现次数进行计数,最后通过该对象将计数结果作为数组返回。类似于
count = [2,1,1]
将“status”数组作为参数传递给函数将允许您在需要时重用函数
输出看起来非常随机,本身几乎没有给出值实际与什么相关的线索,但希望本示例能为您提供一些有关数组中元素实例计数方法的想法。为什么第一个数据结构不够好?第二个似乎毫无意义,除非你知道单词的顺序。还有,你的例子正确吗?(拒绝=3?)我同意,第二个数据结构没有意义,因为它依赖于原始数组的顺序。“使用jquery”-您当前没有使用jquery,也不需要它。您的当前输出至少作为中间工作步骤是必需的(尽管您应该使用对象而不是数组),但正如已经指出的,您所需的输出本身实际上有点难以使用。无论如何,您可以映射现有值以获得一个普通数组:
count=Object.keys(count).map(v=>count[v])
。为什么不映射Object.keys(count).map(c=>count[c])
?可能需要向OP说明您使用的是ES6符号,除非他使用的是预处理器?@RickCalder ES6在最新的Firefox中工作,但是你说得对-我会填一点。是的,我知道它正在被本地人采用,但是如果没有巴贝尔,我们离使用它还差得远呢。哈哈。
count = [2,1,1]
function statusCount(status) {
var count = {};
status.forEach(function(s) {
count[s] = count[s] ? ++count[s] : 1;
});
//count = {Inprocess: 2, Hired: 1, Rejected: 1}
return Object.keys(count).map(function(c) {
return count[c];
});
}
var sCount = statusCount(['Inprocess', 'Hired', 'Rejected', 'Inprocess']);
console.log(sCount);
//=> Array [ 2, 1, 1 ]