下面的函数不返回数组,只返回对象元素。我不明白为什么
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
会抛出错误)