递归函数如何在数组中保存消息?

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了递归函数如何在数组中保存消息?相关的知识,希望对你有一定的参考价值。

我创建了递归函数,对我的嵌套对象进行排序,根据某些属性从中获取消息。最后我想得到一个包含消息的数组,但是当函数迭代时,它会重写旧数组。如何在不丢失previos消息的情况下继续将消息推送到数组并返回该数组

我试图在jsfiddle中重现我的代码,但我的递归函数只运行一次。无论如何,如果你需要一个我正在使用的对象,这里有一个链接qazxsw poi

https://jsfiddle.net/armakarma/hvj62una/1/
答案

至少有两种解决方案。

  1. 创建一个声明 getMessageFromStage(data, algoritmID, stageIDS) { let stage = data[algoritmID][stageIDS] let result = [] let nextStageId = null let nextAlgId = null // here i'm pushing messages to result array if (stage.messages.length) { for (let i = 0; i < stage.messages.length; i++) { if (stage.messages[i].message_type === "text") { result.push(stage.messages[i].message) } } } if (stage.render === true) { nextStageId = stage.stageID } else { nextStageId = 1 } if (stage.algoritm_id) { nextAlgId = stage.algoritm_id } else { nextAlgId = algoritmID } if (nextStageId && nextAlgId && stage.render) { this.getMessageFromStage(data, nextAlgId, nextStageId) } } 的外部函数,并首次调用results
getMessageFromStage
  1. 使myFun(data, algoritmID, stageIDS) { const results = []; this.getMessageFromStage(data, algoritmID, stageIDS); return results; } 成为results的另一个可选参数,并将其与每次递归调用一起传递。
getMessageFromStage

以上是关于递归函数如何在数组中保存消息?的主要内容,如果未能解决你的问题,请参考以下文章

java基础3-重载+命令行传参+递归+数组+排序

如何在自定义PyYAML构造函数中处理递归?

如何将递归函数的答案放入数组(PHP)中?

VSCode自定义代码片段—— 数组的响应式方法

VSCode自定义代码片段10—— 数组的响应式方法

如何在递归函数中保存多个输出