如何解决Javascript减少,从第二次出现开始计数
我有一个名为 adct 的简单数组,只有一个成员“title”,我正在使用 reduce 函数进行分组/计数。下面的代码按预期工作,但我实际上只想计算第二次出现的元素,而不是第一次。我认为这很简单,但我不知道如何去做。帮助将不胜感激。谢谢。
let result = adct.reduce(function (r,a) {
r[a.title] = r[a.title] || [];
r[a.title]++;
return r;
},Object.create(null));
解决方法
可能有一个更优雅的方法,但这是我想出的
let result = Object.fromEntries(Object.entries( // wrap the reduce as an array
adct.reduce(function(r,a) {
r[a.title] = r[a.title] || [];
r[a.title]++;
return r; },Object.create(null)))
.filter(e=>e[1]>0)) // filter out the zeroes
const adct=[{title:'fred'},{title:'fred'},{title:'wilma'},{title:'fred'}];
let result = Object.fromEntries(Object.entries(adct.reduce(function(r,a) {
r[a.title] = r[a.title] || [];
r[a.title]++;
return r;
},Object.create(null)))
.map(e=>{ e[1]--; return e;})
.filter(e=>e[1]>0))
console.log(result)
/* result:
{
"fred": 3,"wilma": 1
}
*/
版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。