如何解决“预期在箭头函数array-callback-return中返回值”?

时间:2020-03-18 01:24:57

标签: 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.setState({ categories: categories });
}

3 个答案:

答案 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创建新的类别数组。