当使用.reduce Angular时返回数组



下面的函数不返回数组,只返回对象元素。我不明白为什么

const selectedId = selectedItems.reduce<string[]>(
(acc, curr, index) => ({
...acc,
item: curr.id
}),
[]
);
console.log('selectedId ', selectedId ); // {"item": "1"}

我想选择一个像这样的数组:item: ["1", "2", "3"]

请任何想法,谁是一个问题在我的代码?

它返回一个对象,因为它返回你的回调函数最后返回的东西是什么,而你的回调函数返回的是一个对象(不是数组)。

您可能打算使用[]而不是{}作为回调的返回值(=> [...acc, item: curr.id]),但如果是这样,则通过map更清楚地表达该操作:

const selectedId = selectedItems.map(item => item.id);

(我也建议使用复数-selectedIds-因为它包含多个ID值)


¹如果您在空数组上使用reduce,则永远不会调用回调,因此返回您提供的种子值。(如果不提供,reduce会抛出错误)

最新更新