【发布时间】:2021-01-04 18:48:05
【问题描述】:
我有一个嵌套的 JSON 结构,就像一个播放列表可以有图像、视频,这个播放列表也可以有另一个嵌套的播放列表。
所以我希望得到输出,比如当我从头到尾遍历最顶部的播放列表时,将其嵌套/子播放列表的项目只是落在最顶层循环索引中的项目。
到目前为止我已经尝试过了
<html>
<head>
<script src="https://code.jquery.com/jquery-3.5.1.min.js" integrity="sha256-9/aliU8dGd2tb6OSsuzixeV4y/faTqgFtohetphbbj0=" crossorigin="anonymous"></script>
<script>
$.getJSON( "https://5da7520623fa7400146975dd.mockapi.io/api/playlist", function(data){
iterate(data.contents, 3)
});
//*******response is received and passed, all your logic goes here*********
function iterate(contents, maxRound) {
for(i = 1; i <= maxRound; i++) {
parse(contents,i)
}
}
function parse(contents, cycle) {
$.each(contents, function(i, content) {
if(content.type == "playlist") {
var contentsLength = content.contents.length
var indexForRound = cycle % contentsLength
if(contentsLength == cycle) {
indexForRound = contentsLength - 1
}else {
indexForRound = indexForRound - 1
}
const onlyContentToChild = content.contents[indexForRound]
parse([onlyContentToChild], 1)
}else {
$("#contents").append('<li> '+ content.name +' </li>');
}
});
}
</script>
</head>
<body>
<ol id="contents">
</ol>
</body>
</html>
注意:调用 API 即 get playlist 返回与示例二匹配的响应
【问题讨论】:
-
我不太明白你想解决的问题。您可以添加更多详细信息吗?就像在第一个例子中一样 - 你如何决定,你计算了多少轮?最长的播放列表是多少?如果您能更详细地描述它,这将有助于我理解您的问题。
-
maxRound 代表什么?
-
如果有三个顶级图像而不是两个会发生什么?每轮返回超过 4 个文件吗?
-
@SimonvanEndern 谢谢,是的,根据最长的播放列表,我将编辑我的问题以使其更清晰
-
@D.Seah 在访问所有项目之前,我需要迭代最顶部的播放列表的最大轮数,例如示例一个 maxRound 为 3,示例二为 9,截至目前它是硬编码的而且我不知道我的方法是否正确,或者我将如何计算这个 maxRound 只是我用我的参考示例图像硬编码
标签: javascript algorithm data-structures logic