Javascript “如何修复”;应在arrow函数数组回调返回“return”中返回值;?
我不明白,你们需要通过地图返回具体的方式吗Javascript “如何修复”;应在arrow函数数组回调返回“return”中返回值;?,javascript,reactjs,Javascript,Reactjs,我不明白,你们需要通过地图返回具体的方式吗 componentDidMount() { // read the items db let categories = []; items.map(cat => { if (categories.indexOf(cat.category) === -1) { categories.push(cat.category); } }); console.log(categories); this.se
componentDidMount() {
// read the items db
let categories = [];
items.map(cat => {
if (categories.indexOf(cat.category) === -1) {
categories.push(cat.category);
}
});
console.log(categories);
this.setState({ categories: categories });
}
是的,它要求您返回一些内容来创建新数组。 如果您只想迭代项并将一些值推送到categories数组,那么可以使用forEach或for…of。
this.setState({
类别:items.filter(cat=>categories.indexOf(cat.category)==-1).map(cat=>cat.category)
})
map的目的是从旧数组生成新数组。函数的返回值指定数组中该点的新值应该是什么。由于您没有返回任何内容,因此将生成一个未定义的数组。这可能是一个错误,因此lint规则正在警告您
在您的情况下,您似乎根本不关心map生成的数组,因此解决方法是使用更合适的方法,例如.forEach
let categories = [];
items.forEach(cat => {
if (categories.indexOf(cat.category) === -1) {
categories.push(cat.category);
}
});
从:
数组有几种用于过滤、映射和折叠的方法。如果我们忘记在这些函数的回调中编写return语句,那可能是个错误。如果您不想使用返回或不需要返回的结果,请考虑使用.Frach替代。
尝试使用迭代器as for或forEach map从它返回的映射中不起作用
要渲染的新数组可能未定义或
在您的情况下,您似乎根本不关心map生成的数组,因此解决方法是使用更合适的方法,例如.forEach或for
let categories=[];
常量项=[];
用于(让cat进入项目){
if(类别索引of(类别)=-1){
类别。推送(类别);
}
};
控制台日志(类别)代码>您根本不返回,在映射中,您通常返回yes,除非您希望有未定义的值,items.map(cat=>(categories.indexOf(cat.category)==-1)?categories.push(cat.category):未定义,没有多大意义,forEach更适合用于副作用,因为在这种情况下,从远处看,您试图做的只是将状态类别设置为items
,没有重复项。这可以写成this.setState({categories:items.filter((el,i,arr)=>arr.indexOf(el)==i);