在Javascript中,如何将多个项目的列表简化为一个键值对对象?

在Javascript中,如何将多个项目的列表简化为一个键值对对象?,javascript,arrays,Javascript,Arrays,我有一系列的状态: ['CO','CA','CO','AL', ... ,'NV'] 我想减少到: { 'CO': 9, 'CA':17, 'AL':1, etc} 该值是数组中每个状态出现的次数 最有效的方法是什么?您可能会对PHPJS感兴趣。由于PHP函数的功能完全符合您的要求,因此该函数的JavaScript端口很适合您。您可能会对PHPJS感兴趣。由于PHP函数的功能完全符合您的要求,因此该函数的JavaScript端口符合您的要求。我希望您只需迭代数组,将成员值分配给对象属性名称,

我有一系列的状态:

['CO','CA','CO','AL', ... ,'NV']
我想减少到:

{ 'CO': 9, 'CA':17, 'AL':1, etc}
该值是数组中每个状态出现的次数


最有效的方法是什么?

您可能会对PHPJS感兴趣。由于PHP函数的功能完全符合您的要求,因此该函数的JavaScript端口很适合您。

您可能会对PHPJS感兴趣。由于PHP函数的功能完全符合您的要求,因此该函数的JavaScript端口符合您的要求。

我希望您只需迭代数组,将成员值分配给对象属性名称,并将出现次数作为值:

function toObj(arr) {
  var item, obj = {};

  for (var i=0, iLen=arr.length; i<iLen; i++) {
    item = arr[i];
    obj[item]? ++obj[item] : (obj[item] = 1);
  }

  return obj;
}

我希望您只需迭代数组,将成员值指定给对象属性名称,并将出现次数作为值:

function toObj(arr) {
  var item, obj = {};

  for (var i=0, iLen=arr.length; i<iLen; i++) {
    item = arr[i];
    obj[item]? ++obj[item] : (obj[item] = 1);
  }

  return obj;
}
函数压缩2dict(原始)
{ 
var ret={};
对于(var i=0;i
函数压缩2DICT(原始)
{ 
var ret={};

对于(var i=0;i从何处提取数字?是的,取决于数字的用途,我们会建议不同的内容。该值是每个状态出现的次数。编辑以澄清。从何处提取数字?是的,取决于数字的用途,我们会建议不同的内容。该值是oc的数量每个州的货币。编辑以澄清。我会在|=旁边放一条评论,因为它是优雅的,乍一看是令人困惑的(可能是对不太精通这类事情的人的第二眼)。请不要在数组的迭代中使用..,除非您考虑继承属性和其他怪癖。我会在|=旁边加上一条注释,因为它非常优雅,乍一看就让人困惑(可能对不太熟悉这类东西的人来说是第二眼)。请不要在数组的迭代中使用..,除非您考虑继承属性和其他怪癖。
function compress2dict( raw_arr )
{ 
  var ret={}; 
  for(var i=0;i<raw_arr.length;i++)
  {
     var item=raw_arr[i];
     ret[item]|=0;
     ret[item]++;
  }
  return ret;
}

a = ['CO','BO','CO','CC','CC','CO','CC']
b = compress2dict(a)
b
{'BO':1, 'CC':3, 'CO':3}