gpt4 book ai didi

javascript - 计算 JavaScript 数组中对象的出现次数

转载 作者:行者123 更新时间:2023-12-02 15:03:44 25 4
gpt4 key购买 nike

我有一个像这样的对象数组:

arrayOfObjs = [{1:"h"}, {1:"h"}, {2:"h"}, {3:"ha"}, {4:"haa"}, {4:"haa"}, {4:"haa"}]

我想计算每个对象的出现次数,并将结果返回到排序的、可迭代的数据结构中,如下所示:

{
{4:"haa"}: 3,
{1:"h"}: 2,
{2:"h"}: 1,
{3:"ha"}: 1
}

键甚至可以位于数组中。我尝试在 arrayOfObjs 上使用 Lodash 的 countBy 函数。然而,这仅仅导致了

{[object Object]:5}

我可以使用任何库/函数来完成这项工作吗?类似于Python的计数器

更新

作为替代方案,我尝试像这样组织数组:

array = [[1,"h"], [1,"h"], [2,"h"], [3,"ha"], [4,"haa"], [4,"haa"], [4,"haa"]];

再次使用Lodash的countBY函数,我的结果是:

{1,h: 2, 2,h: 1, 3,ha: 1, 4,haa: 3}

好一点,但我现在必须使用正则表达式来分割对象的每个键,因为“1,h”是一个字符串。不理想:(

理想情况,我希望我的键是对象、数组或类似的东西。

最佳答案

无耻的插头:

我正在开发一个名为 Pro.js 的库它有一个集合模块,可以完成各种巧妙的事情。可枚举类有一个 .groupBy() 方法,该方法在这里特别有用。

var arrayOfObjs = [{1:"h"}, {1:"h"}, {2:"h"}, {3:"ha"}, {4:"haa"}, {4:"haa"}, {4:"haa"}];
var enumerable = pro.collections.asEnumerable(arrayOfObjs);
var grouped = enumerable.groupBy(function(o) {
return JSON.stringify(o);
});
var composites = grouped.select(function(g) {
return {
key: g[0],
count: g.length,
group: g
};
});
var output = composites.toArray();

您可以前往Pro.js GitHub Page并使用您的开发人员工具来测试该库。运行我在页面答案中发布的代码片段,看看它是否会产生适合您的结果。

关于javascript - 计算 JavaScript 数组中对象的出现次数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/35250461/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com