var status = ['Inprocess', 'Hired', 'Rejected', 'Inprocess'];
var count = [];
for (var i = 0; i < status.length ; i++) {
if(count[status[i]]){
count[status[i]]++;
} else {
count[status[i]] = 1;
}
}
我有一个数组状态,我正在尝试计算状态值的出现并将结果计入count数组。
我得到的结果为:
count = ["Inprocess" : 2, "Hired" : 1, "Rejected" : 1]
我希望结果是:
count = [2,1,1]
请帮忙。
答案 0 :(得分:0)
一个window.status
属性为window
,对于两个,您似乎会将Array
符号与Object
符号混淆。我也不知道你为什么会被拒绝:3&#39;当数组中只有一个这样的项目时。
我建议将代码包装在一个函数中,以便“#”状态为&#39;变量具有局部范围(或者更好的是,将其作为参数传递给函数),然后使用哈希表来计算每个数组元素的出现次数,最后运行该对象以将计数结果作为数组返回。有点像...
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 ]
传递&#39;状态&#39;数组作为函数的参数将允许您在何时重用该函数。
输出看起来非常随机,并且本身并没有提供与实际相关的内容的线索 - 但希望这个例子能为您提供有关计算数组中元素实例的方法的一些想法。