JavaScript 中对元素进行分组和重复计数的有效算法
javascriptweb developmentfront end technologyobject oriented programming更新于 2024/1/11 9:48:17
我们有一个对象数组。如果对象的一个属性与另一个对象的属性相同,我们会认为它是一个重复条目。
我们想根据这个属性对对象进行分组,并存储有关"重复"发生次数的信息。
X A B O Y X Z I Y X Z U X A B L Y X Z K
我们想根据第一个值进行分组。
每个重复项中的另外两个属性也相同,但比较第一个值就足够了。
我们需要向用户显示如下结果 −
Y X Z (3) X A B (2)
示例
其代码为 −
const arr = [
{x: 'x', acc: 'acc', val: 'val'},
{y: 'y', x: 'x', z: 'z'},
{y: 'y', x: 'x', z: 'z'},
{x: 'x', c: 'c', val: 'val'}
];
const countOccurrence = (arr = []) => {
const res = {};
arr.forEach (item => {
Object.keys( item ).forEach (prop => {
( res[prop] ) ? res[prop] += 1 : res[prop] = 1;
});
});
return res;
}
const groupByOccurrence = (data = []) => {
const obj = countOccurrence(data);
const res = Object.keys ( obj ).reduce ( ( acc, val ) => {
( acc[obj[val]] ) ? acc[obj[val]].push ( val ) : acc[obj[val]] = [val];
return acc;
}, {});
return res;
}
console.log(groupByOccurrence(arr));
输出
And the output in the console will be:
{ '1': [ 'acc', 'c' ], '2': [ 'val', 'y', 'z' ], '4': [ 'x' ] }
相关文章
有用资源
javascript 参考教程 - 该教程包含有关 javascript 的更多信息:https://www.cainiaomax.com/javascript/

