当前位置: 首页 > 知识库问答 >
问题:

作为参数发送到另一个函数后清除数组

姜弘化
2023-03-14

我正在努力想办法让这个工作。我想如果我发送一个数组作为另一个函数的参数,我就可以清除它,但是每次我都从它发送到的函数中得到错误。我试图过滤两个充满坐标{x:, y:}的2D数组。一切都运行良好,除了我不能清除val后,每次我把它传递给我的check()函数。如果我试图清除它,我会从我的check()函数中得到错误。

我不指望它会像我想的那样,一旦它作为一个论点被发送出去,它就不再重要了。我还尝试了以多种方式创建副本,但无论如何,通过拼接val或执行val=0,检查函数,特别是当调用长度(validate[0])时,它会抛出错误。

我已经做了很久了。任何帮助都很感激。

    let val = [];
    let hLines = []
    function compare() {
      for (let i = 0; i < 8; i++) {
        //val = []
        for (let j = 0; j < sortY[i].length; j++) {
          for (let k = 0; k < sortX.length; k++) {
            for (let l = 0; l < sortX[k].length; l++) {
              if (sortY[i][j] == sortX[k][l] && !val.includes(sortX[k])) {
                val.push(sortX[k])
              }
            }
          }
          if (j === sortY[i].length - 1) {
            //let copy = val.slice()
            //check(sortY[i], copy)
            check(sortY[i], val)
            //val = []
          }
        }
      }
    }
    compare()

    
    function check(hLine, validate) {
      for (let i = 0; i < validate.length; i++) {
        for (let j = 0; j < validate[i].length; j++) {
          let first = validate[i][0];
          let last = validate[i][validate[i].length - 1];

          if (validate[i][j] != first && validate[i][j] != last) {
            validate[i].splice(j, 1)
            j--
          }
        }
      }

      let lengthValue = length(validate[0])
      let lengthCheck = validate.every((v, i) => {
        return length(v) === lengthValue
      })

      if (!lengthCheck) {
        hLines.push(hLine)
      }
    }
    console.log(hLines)

共有1个答案

鲜于玮
2023-03-14

要创建无参考副本,请使用此功能

function copy(aObject) { // Deep Clone Object from https://stackoverflow.com/a/34624648/16642626
    if (!aObject) {
        return aObject;
    }

    let v;
    let bObject = Array.isArray(aObject) ? [] : {};
    for (const k in aObject) {
        v = aObject[k];
        bObject[k] = (typeof v === "object") ? copy(v) : v;
    }

    return bObject;
}

如果您想知道:只有在复制基本数据类型时引用才会丢失,因此您需要遍历对象层并从基本层复制它。

 类似资料:
  • 问题内容: 是否可以通过C语言函数API或通过使用其中将回调函数作为参数的参数在Postgres中创建用户定义的函数? 据我所知,没有办法通过C语言API来执行此操作,因为它仅接受sql数据类型,而没有的数据类型。但是也许我想念什么? 问题答案: 我认为您不能,但是由于没有匿名函数,因此应该传递函数名。

  • 美国东部时间2019.05.14下午4:54更新-好的-下面是说明我的问题的代码-可能我花了太长时间才得到这个,而且可能太长了,但我还是Java新手。无论如何——它可以工作,打开窗体,但无法让第二个按钮看到并对“事件”做出反应。我想我现在是在“提高”活动,好吧——至少它在活动中达到了标准。但是,它仍在运行类代码,而不是通过setOnFormStateChange传入的“自定义”代码????我不确定

  • 问题内容: 如果我有 我有: 然后,我可以成功执行以下操作: 但是,假设我要在doSomething中添加另一个参数,例如: 如果我这样称呼,Go在编译时会抱怨: 带有: 有没有办法做到这一点,还是我应该放弃并将返回值分配给某些引用,并将msg和这些值传递给? 问题答案: 在规范中对此进行了描述。它要求内部函数返回所有参数的正确类型。没有多余的参数以及返回多个值的函数。 作为一种特殊情况,如果一个

  • 问题内容: 我是ajax和回调函数的新手,如果我弄错了所有概念,请原谅我。 问题: 我可以将 回调 函数作为参数发送给将执行该回调的另一个函数吗? 问题答案: 对。函数引用与任何其他对象引用一样,您可以将它们传递到您的内心。 这是一个更具体的示例: 您还可以传递以下参数:

  • 我试图学习功能性Kotlin,并编写了以下测试代码: 在REPL中,我可以成功调用“findBorrowerX”: 但是我如何拨打“findBorrowerX2”的电话: 并将迭代的借用器x传递给getName?? 这看起来有关联,但我不确定: Kotlin:如何将一个函数作为参数传递给另一个? 提前感谢您对此的帮助! 编辑: 下面是我想做的等效Scala代码: 也许这在科特林是不可能的?

  • 我想在函数中传递参数,但它给出了一个错误,这个语法保留供将来使用;要调用引用,请将其括在括号中:(foo::bar)(args)。此外,我还想制作一个genric runFunction,它可以接受任何参数,例如Int、String等。在这个示例代码中,我将sumInt(2)发送给runFunction,我还想发送concatatestring(“John”)。任何人都知道如何做到这一点。我试着搜