Javascript 应在arrow函数数组回调函数的末尾返回一个值

Javascript 应在arrow函数数组回调函数的末尾返回一个值,javascript,reactjs,filter,arrow-functions,Javascript,Reactjs,Filter,Arrow Functions,我在React中工作,当前收到错误“预期在arrow函数数组回调返回的末尾返回一个值”。我搜索了其他问题,但似乎找不到一个与min匹配的问题(除非我完全失明)。我有以下代码 const self=this; const relevantCompanyMeasures=this.props.companyMeasures .filter(公司测量=>{ for(自我状态的常量度量){ if(measure.id==companyMeasure.measure\u type\u id)返回true

我在React中工作,当前收到错误“预期在arrow函数数组回调返回的末尾返回一个值”。我搜索了其他问题,但似乎找不到一个与min匹配的问题(除非我完全失明)。我有以下代码

const self=this;
const relevantCompanyMeasures=this.props.companyMeasures
.filter(公司测量=>{
for(自我状态的常量度量){
if(measure.id==companyMeasure.measure\u type\u id)返回true;
否则返回false;
}
});或者:

  • 循环开始了
  • 您将获得第一个
    度量值
  • 条件为true,返回true
  • 您永远不会前进到第二个
    度量值
  • 或:

  • 循环开始了
  • 您将获得第一个
    度量值
  • 条件为false,您返回false
  • 您永远不会前进到第二个
    度量值

  • 去掉
    else
    并将
    return false
    移动到循环后面,这样只有在到达循环末尾而未找到匹配项时,它才会运行。

    或者:

  • 循环开始了
  • 您将获得第一个
    度量值
  • 条件为true,返回true
  • 您永远不会前进到第二个
    度量值
  • 或:

  • 循环开始了
  • 您将获得第一个
    度量值
  • 条件为false,您返回false
  • 您永远不会前进到第二个
    度量值


  • 去掉
    else
    并将
    return false
    移动到循环的后面,这样它只有在到达循环末尾而没有找到匹配项时才会运行。

    这是因为
    return
    只退出
    for
    循环,而不是
    数组中的整个回调。prototype.filter()
    。与使用for循环检查
    companyMeasure.measure\u type\u id
    是否存在于
    self.state.measures
    中不同,您只需执行一个返回所有id的操作,然后使用以下命令对照返回数组检查id是否存在:

    更好的是:

    • 由于您使用的是箭头函数,因此封闭范围中的词法
      this
      将被保留,因此您甚至不需要代理
      this
    • 您还可以在
      .filter()
      回调之外创建数组映射,以减少开销
    • 现在,
      .filter()
      回调是一个单行程序,我们可以去掉花括号和
    以下是最终代码的外观:

    const ids = this.state.measures.map(m => m.id);
    const relevantCompanyMeasures = this.props.companyMeasures
      .filter(companyMeasure => id.includes(companyMeasure.measure_type_id));
    

    这是因为
    返回只退出
    for
    循环,而不是
    Array.prototype.filter()中的整个回调。与使用for循环检查
    companyMeasure.measure\u type\u id
    是否存在于
    self.state.measures
    中不同,您只需执行一个返回所有id的操作,然后使用以下命令对照返回数组检查id是否存在:

    更好的是:

    • 由于您使用的是箭头函数,因此封闭范围中的词法
      this
      将被保留,因此您甚至不需要代理
      this
    • 您还可以在
      .filter()
      回调之外创建数组映射,以减少开销
    • 现在,
      .filter()
      回调是一个单行程序,我们可以去掉花括号和
    以下是最终代码的外观:

    const ids = this.state.measures.map(m => m.id);
    const relevantCompanyMeasures = this.props.companyMeasures
      .filter(companyMeasure => id.includes(companyMeasure.measure_type_id));
    
    const self=this;
    const relevantCompanyMeasures=this.props.companyMeasures
    .filter(公司测量=>{
    返回self.state.measures.map(meas=>meas.id).indexOf(companyMeasure.measure\u type\u id)!=-1
    }
    );
    
    const self=this;
    const relevantCompanyMeasures=this.props.companyMeasures
    .filter(公司测量=>{
    返回self.state.measures.map(meas=>meas.id).indexOf(companyMeasure.measure\u type\u id)!=-1
    }
    
    );
    filter方法仅在满足条件时返回arrayOfValue..filter方法仅在满足条件时返回arrayOfValue..@user48003没问题!每个人都从某处开始;)很高兴它对你有用。@user48003没问题!每个人都从某处开始;)很高兴它对你有用。