数组集长度不等于数组分布之和

Array Set Length unequal to Sum of Array Distribution

我有一个这样的用户 ID 列表:["1111","5555","1111","8983",...]。然后我计算 ids 的频率分布。但是不知何故添加分发箱的大小小于用户设置。

function histogram(List){
    var d = {};
    for(const x of List){
        if (x in d){
            d[x]+=1;
        }
        else{
            d[x]=1;
        }
    }
    return d
}

var featureuserids = f1_users.concat(f2_users,f3_users,f4_users)
var featureusers = [...new Set(featureuserids)];
const featurehist = histogram(Object.values(histogram(featureuserids)))
const n_featureusers = featureusers.length

这是一个示例输出。

Feature Users: 17379
Feature Hist: { '1': 16359, '2': 541, '3': 93, '4': 6 }

我的错误是什么?

我找到了答案。我的一个列表 (f1_users) 将 id 保存为 int,而其他列表为字符串格式。因此,他们在该组中被计为双倍。将它们全部转换为字符串后,问题得到解决。