Warning: file_get_contents(/data/phpspider/zhask/data//catemap/9/javascript/428.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Javascript 使用jquery统计数组的出现次数_Javascript_Jquery_Arrays - Fatal编程技术网

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 ]