我正在尝试将对象数组减少为一组唯一值。为此,我试图使用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());
我的测试报告以下错误:
TypeError:无法读取未定义的属性“ add”
我正在尝试做的事可能吗?我需要其他方式吗?
最佳答案
如果if条件失败,则需要返回accumulator
。否则默认情况下,它返回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])
关于javascript - 我的 reducer 可以使用Set作为初始值吗?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/54186493/