簡體   English   中英

檢查數組 javascript 中的 substring

[英]Check substring in array javascript

當我在數組中有單詞 SAC 和 Assessoria 時,它只返回第一個 if,這個邏輯有什么問題?

如果數組(技能)具有 substring SAC,我想用 response.data.SAC 創建一個 setState,它也是一個數組

如果數組(技能)有 substring Assessoria,我想用 response.data.AC 創建一個 setState,它也是一個數組

如果你同時有子字符串 SAC 和 Assessoria,我想用 response.data.SAC 和 response.data.AC 創建一個 setState,它們都是 arrays

下面的代碼:

getDataTab() {
    const URL = `${Utils.ngrok_service}`;

    const skills = this.props.manager.workerClient.attributes.routing.skills;

    axios.post(URL).then((response) => {

      skills.map((item, index) => {

        if (item.includes('SAC')) {
          console.log('SAC EXISTE');
          this.setState({ options: response.data.SAC });
        } else if (item.includes('Assessoria')) {
          console.log('AC EXISTE');
          this.setState({ options: response.data.AC });
        } else if (item.includes('SAC') && item.includes('Assessoria')) {
          console.log('ambos EXISTE');
          this.setState({
            options: [...response.data.SAC, ...response.data.AC],
          });
        } else {
          console.log('nada EXISTE');
        }
      });
    });
  }

您在每次迭代時設置 state 一次,而不是先迭代整個數組以檢查條件。 您的條件檢查的順序也不正確。

let hasSAC = false, hasAssessoria = false;
skills.forEach(item=>{
    hasSAC = hasSAC || item.includes("SAC");
    hasAssessoria = hasAssessoria || item.includes("Assessoria");
});
if(hasSAC && hasAssessoria){
     console.log('ambos EXISTE');
     this.setState({
        options: [...response.data.SAC, ...response.data.AC],
     });
} else if(hasSAC){
     console.log('SAC EXISTE');
     this.setState({ options: response.data.SAC });
} else if(hasAssessoria){
    console.log('AC EXISTE');
    this.setState({ options: response.data.AC });
} else {
    console.log('nada EXISTE');
}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM