Javascript 使用jQuery的数组中的计数值频率

Javascript 使用jQuery的数组中的计数值频率,javascript,Javascript,我有一个表单,页面上有几个选择题,使用serializeArray可以得到如下数组 [ { name: "question1", value: "a" }, { name: "question2", value: "a" }, { name: "question3", value: "b" } ] 依此类推(每个问题都有答案选项a、b和c) 如何计算数组中每个答案(a、b和c)的频率,并将计数作为变量(在上述情况下为a=2

我有一个表单,页面上有几个选择题,使用
serializeArray
可以得到如下数组

[
  {
    name: "question1",
    value: "a"
  },
  {
    name: "question2",
    value: "a"
  },
  {
    name: "question3",
    value: "b"
  }
]
依此类推(每个问题都有答案选项a、b和c)


如何计算数组中每个答案(a、b和c)的频率,并将计数作为变量(在上述情况下为a=2、b=1)?

您根本不需要jQuery

var array = [
  {
    name: "question1",
    value: "a"
  },
  {
    name: "question2",
    value: "a"
  },
  {
    name: "question3",
    value: "b"
  }
]

var counts = {};

array.forEach(function(element) {
    if (!counts[element.value]) {
        counts[element.value] = 0;
    }

    counts[element.value] += 1;
});

console.log(counts);

// Output :
// {"a" : 2, "b" : 1}
诸如此类:

var countArray = {}

$.each(dataArray, function(index, value){
    if(countArray[value.value] == undefined)
        countArray[value.value] = 0;

    countArray[value.value]++;
});

试试这个:您可以迭代应答数组,并将计数保存在单独的映射中,其中应答值是键。请参阅下面的代码-

var应答器数组=[
{
姓名:“问题1”,
价值:“a”
},
{
姓名:“问题2”,
价值:“a”
},
{
姓名:“问题3”,
值:“b”
}
];
var countMap={};
$.each(应答器数组,函数(k,v){
countMap[v.value]=(countMap[v.value])?(parseInt(countMap[v.value]))+1:1;
});
警报(JSON.stringify(countMap))
简单:

var answers = [
  {
    name: "question1",
    value: "a"
  },
  {
    name: "question2",
    value: "a"
  },
  {
    name: "question3",
    value: "b"
  }
]
var histogram = {};

for ( var n = 0; n <answers.length; n++ )
{
   if ( !histogram[answers[n].value] )
       histogram[answers[n].value] = 1;
   else
       histogram[answers[n].value] ++;
}

紧凑jQuery解决方案:

var count = {a: 0, b: 0, c: 0};

$(array).map(function(){
    count[this.value]++;
});
这最终给了你:

{a: 2, b: 1, c: 0}

请展示你所做的尝试
{a: 2, b: 1, c: 0}