我的减速机可以使用Set作为初始值吗?

Cug*_*uga 0 javascript reduce typescript

我正在尝试将一组对象减少为一组唯一值.为此,我试图使用Set作为reduce()操作的累加器.

subscriptions = [
    {list_id: 'abc', name: 'nom', subscribed: true},
    {list_id: 'abc', name: 'nom', subscribed: true},
    {list_id: 'ghi', name: 'nom', subscribed: false}];

return subscriptions.reduce((accumulator, currentValue) => {
    if (currentValue.subscribed) {
      return accumulator.add(currentValue.list_id);
    }
  }, new Set());
Run Code Online (Sandbox Code Playgroud)

我的测试报告了以下错误:

TypeError:无法读取未定义的属性"add"

我正在尝试做什么?我是否需要以其他方式做到这一点?

Cod*_*iac 5

accumulator如果你的if条件失败,你需要返回.否则默认返回undefined(隐式).

let subscriptions = [
    {list_id: 'abc', name: 'nom', subscribed: true},
    {list_id: 'abc', name: 'nom', subscribed: true},
    {list_id: 'ghi', name: 'nom', subscribed: false}];

let  op = subscriptions.reduce((accumulator, currentValue) => {
    if (currentValue.subscribed) {
      accumulator.add(currentValue.list_id);
    }
    return accumulator
  }, new Set());
  
  console.log([...op])
Run Code Online (Sandbox Code Playgroud)