【问题标题】:How to run a code after a return statement in javascript如何在javascript中的return语句之后运行代码
【发布时间】:2022-09-24 20:39:11
【问题描述】:

我昨天在解决算法问题时遇到了一个问题,就是这样。

  remove() {
    // your code here
    if(!this.arr.length) {
      return -1;
    }
    else if(this.arr.length) {
     return this.arr[0];
     this.arr.splice(0, 1);
    }
  }

注意:- 这是类方法之一的一部分。

在拼接相同的项目之前,我想在零索引中获取项目。然后我意识到 return 语句之后的代码称为无法访问的代码因此,不会被执行。

  • 请不要使用您从答案中获得的信息来更新问题。回滚到原始版本。

标签: javascript algorithm queue


【解决方案1】:

在这种特殊情况下,您可以使用返回值splice:它返回提取的切片,因此它包含您要返回的值。

作为旁注,else 部分不需要if 来测试数组长度,因为该条件保证为真。

  remove() {
    if(!this.arr.length) {
      return -1;
    }
    else {
     return this.arr.splice(0, 1)[0];
    }
  }

请注意,对于这种特殊的拼接,有一个快捷方法:shift:

  remove() {
    if(!this.arr.length) {
      return -1;
    }
    else {
     return this.arr.shift();
    }
  }

您可以使用条件运算符缩短它:

  remove() {
    return this.arr.length ? this.arr.shift() : -1;
  }

如果您确定您的数组不会有 null 或 undefined 条目,您甚至可以这样做:

  remove() {
    return this.arr.shift() ?? -1;
  }

【讨论】:

    【解决方案2】:

    这是一个古老的棘手解决方案。

    let arr=[1,2,3,4,5]
     function remove() {
         try {
             // your code here
            if(!arr.length) {
              return -1;
            }
            else if(arr.length) {
             return arr[0];
           
            }
        } finally {
             arr.splice(0, 1);
        } 
    
      }
      console.log(remove());
      console.log(arr)
    

    【讨论】:

      【解决方案3】:

      因此,我来​​到这里寻求答案,并找到了一个并不真正适用于我的代码的 setTimeout 解决方案。 所以,我想出了一个解决方案。

        remove() {
          // your code here
          if(!this.arr.length) {
            return -1;
          }
          else() {
           let firstEl = this.arr[0];
           this.arr.splice(0, 1);
           return firstEl;
          }
        }
      

      将您希望返回的内容存储在一个变量中,然后在返回您存储的值之前执行您的代码。这样,它在某种意义上是分层的。

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2023-02-07
        • 1970-01-01
        • 1970-01-01
        • 2018-01-23
        • 2023-03-04
        • 2021-01-16
        相关资源
        最近更新 更多