我正在尝试将对象数组简化为一组唯一值。为此,我正在尝试使用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”
我试图做的是可能的吗?我需要以其他方式执行此操作吗?
答案 0 :(得分:5)
如果if条件失败,则需要返回dev_appserver.py --smtp_host=smtp.gmail.com --smtp_port=25 --smtp_user=xxx@gmail.com --smtp_password=yyy myapp
。否则默认情况下,它将返回accumulator
(隐式)。
undefined
答案 1 :(得分:1)
您可以先过滤并映射list_id
并采用Set
的构造函数,而不是减少数组。
var subscriptions = [{ list_id: 'abc', name: 'nom', subscribed: true }, { list_id: 'abc', name: 'nom', subscribed: true }, { list_id: 'ghi', name: 'nom', subscribed: false }],
uniqueIds = new Set(subscriptions
.filter(({ subscribed }) => subscribed)
.map(({ list_id }) => list_id)
);
console.log([...uniqueIds]);