Javascript 减少,从第二次出现开始计数
Javascript reduce, count from second occurence
我有一个名为 adct 的简单数组,只有一个成员 'title',我 grouping/counting 具有 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:'fred'}, {title:'wilma'}, {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
}
*/
我有一个名为 adct 的简单数组,只有一个成员 'title',我 grouping/counting 具有 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:'fred'}, {title:'wilma'}, {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
}
*/