![](/img/trans.png)
[英]How to add a key value pair to an array of objects in javascript with multiple value?
[英]How to reduce a list of multiple items to a key value pair object in Javascript?
我有一系列狀態:
['CO','CA','CO','AL', ... ,'NV']
我想減少到:
{ 'CO': 9, 'CA':17, 'AL':1, etc}
該值是陣列中每個狀態發生的次數。
什么是最有效的方法呢?
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}
您可能對array_count_values
中的array_count_values
感興趣。 由於PHP array_count_values
函數完全符合您的要求,因此該函數的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;
}
或者如果你喜歡while循環(有時它們更快,有時候不是):
function toObj(arr) {
var item, obj = {}, i = arr.length;
while (i) {
item = arr[--i];
obj[item]? ++obj[item] : (obj[item] = 1);
}
return obj;
}
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.