【发布时间】:2020-01-12 03:42:19
【问题描述】:
我正在尝试创建一个函数来使用 JavaScript 中的递归或循环来处理与深度相关的数字列表。
下面的“输入”需要处理成“输出”,它需要对任意列表起作用。
需要注意的一点是,数字会增加 0 或 1,但可能会减少任意数量。
var input = [0, 1, 2, 3, 1, 2, 0]
var output =
[ { number: 0, children:
[ { number: 1, children:
[ { number: 2, children:
[ { number: 3, children: [] } ]
}
]
}
, { number: 1, children:
[ { number: 2, children: [] } ]
}
]
}
, { number: 0, children: [] }
]
我自己解决了这个问题,尽管它需要一些改进。
var example = [0, 1, 2, 2, 3, 1, 2, 0]
var tokens = []
var last = 0
const createJSON = (input, output) => {
if (input[0] === last) {
output.push({ num: input[0], children: [] })
createJSON(input.splice(1), output)
}
else if (input[0] > last) {
last = input[0]
output.push(createJSON(input, output[output.length-1].children))
}
else if (input[0] < last) {
var steps = input[0]
var tmp = tokens
while (steps > 0) {
tmp = tmp[tmp.length-1].children
steps--
}
tmp.push({ num: input[0], children: [] })
createJSON(input.splice(1), tmp)
}
}
createJSON(example, tokens)
console.log(tokens)
【问题讨论】:
-
I'm trying to create a function你能告诉我们你是如何尝试实现你的功能的吗?您具体在哪里遇到问题? -
您能详细说明您要做什么吗?非常不清楚。
-
我们希望您在发布之前进行研究并进行尝试。然后,当您发帖时,您将展示您尝试过的内容并就您遇到的问题提出具体问题。我们不是代码编写服务,所以请帮助我们帮助您。
-
你讨厌在输出对象中放置逗号?
-
很抱歉最初没有添加我的代码。我没有添加逗号,因为它只是为了表示,我认为它更具可读性。
标签: javascript