我不明白,您是否需要通过地图返回特定的方式?
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 });
}
答案 0 :(得分:2)
.map
的目的是从旧数组中产生一个新数组。函数的返回值指定数组中该位置的新值。由于您不返回任何内容,因此将生成undefined
的数组。这可能是一个错误,因此棉绒规则正在警告您。
对于您而言,您似乎根本不关心map生成的数组,因此解决方法是使用更合适的方法,例如.forEach
let categories = [];
items.forEach(cat => {
if (categories.indexOf(cat.category) === -1) {
categories.push(cat.category);
}
});
来自documentation on array-callback-return:
数组有几种过滤,映射和折叠的方法。如果我们忘记在这些回调中编写return语句,那可能是一个错误。如果您不想使用返回值或不需要返回的结果,请考虑使用.forEach。
答案 1 :(得分:0)
尝试将iterator用作for或for每个地图都无法满足其返回的地图的目的 要渲染的新数组可能未定义,或者 就您而言,您似乎根本不在乎map生成的数组,因此解决方法是使用更合适的方法,例如.forEach或for
let categories = [];
const items = [];
for (let cat in items) {
if (categories.indexOf(cat.category) === -1) {
categories.push(cat.category);
}
};
console.log(categories);
在此处输入代码
答案 2 :(得分:-1)
是的,它要求您返回一些内容来创建新的数组。 如果只想迭代项并将某些值推入category数组,则可以使用forEach或for ... of。
this.setState({
categories: items.filter(cat => categories.indexOf(cat.category) === -1).map(cat => cat.category)
})
使用过滤器删除类别中已包含类别的cat,并使用map创建新的类别数组。