【问题标题】:Skipping through parts of an array in javascript在javascript中跳过数组的一部分
【发布时间】:2015-09-15 14:33:15
【问题描述】:

我有一个数组,我从输入数据中浓缩了很多。我正在输入一个很长的示例,因为我认为这将有助于解释我以后需要做什么。 (我没有输入所有的 html 代码,但它显示了我需要的内容,所以没有问题)。

storyArray=["#C1",
"String of HTML Code that displays first message",
"String of HTML Code that displays second message",
"#D1",
"String of HTML Code that displays two buttons, B1A & B1B",
"#B1A",
"String of HTML Code that displays if button B1A is clicked",
"#>C2",
"#B1B",
"String of HTML Code that displays if button B1B is clicked",
"#>C2",
"#C2", 
"String of HTML Code that displays third message",
"#D2",
"String of HTML Code that displays two buttons, B2A & B2B",
"#B2A",
"String of HTML Code that displays if button B2A is clicked",
"#>C3",
"#B2B",
"String of HTML Code that displays if button B2B is clicked",
"#>C3",
"#C3",
"Final string of HTML Code"]

#>C2 和#>C3 等数组元素分别表示“跳转到#C2 和#C3 之后的元素。

#C1、#C2、#C3 等数组元素是我要跳转到的标记(见上文)。

数组元素#D1表示按钮出现时点击A,跳转到#B1A之后的元素,点击B则跳转到#B1B之后的元素。

因此,如果用户单击#D1 中的按钮 A 和#D2 中的按钮 B,他们应该会看到:

"显示第一条消息的 HTML 代码字符串"

“显示第二条消息的 HTML 代码字符串”

“显示两个按钮 B1A 和 B1B 的 HTML 代码字符串”

“点击按钮 B1A 时显示的 HTML 代码字符串”

“显示第三条消息的 HTML 代码字符串”

“显示两个按钮 B2A 和 B2B 的 HTML 代码字符串”

“点击按钮 B2B 时显示的 HTML 代码字符串”

"HTML 代码的最终字符串"

不幸的是,我似乎无法理解在循环时需要的 if/then 逻辑。任何建议表示赞赏。如果需要,我完全愿意使用 jQuery 或类似的东西。

【问题讨论】:

  • 你必须像这样存储你的数据吗?如果将数据存储在对象而不是数组中,似乎可以更轻松地完成此任务。
  • 你的例子没有意义。如果他们单击“#D1 中的按钮 A”,它应该如何显示“第一条消息”?那应该只在他们点击#C1时才显示对吗?
  • @Entity:我的意思是当他们在 Buttonset D1 显示后最终选择 A 时……这有意义吗?
  • @user1563247 但是按钮组 D1 中的按钮 A 会将它们带到 #B1A 对吗?而且#C1没有跳转标记,为什么会显示“第一条消息”?

标签: javascript jquery arrays loops


【解决方案1】:

你给出的例子不一致,但是我根据对你代码的最好理解写了一个sn-p。

function clicked() {
    var idString = "#" + $(this).attr("id");
    for(var i = storyArray.indexOf(idString); i < storyArray.length; i++) {
        var element = storyArray[i];
        if(element.charAt(0) == '#') {
            if(element.charAt(1) == '>') { // it's a goto
                i = storyArray.indexOf("#"+element.substring(2))+1;
            }
            else { // it's a label, so skip
                continue;
            }
        }
        else {
            displayElement(element); // element is the string to display
        }
    }
}

演示:http://jsfiddle.net/fy13gzbj/2/

它使用非常简单的逻辑。基本上,它从上到下执行数组,就好像它是一个脚本一样。它在单击按钮的 ID 处输入数组,例如#B2B。它继续沿着数组向下移动,直到到达 goto 命令 (#&gt;) 或数组末尾。

【讨论】:

  • 谢谢!当我看到你在 .charAt 上做一个元素,然后做一个 indexOf() 方法时,一切看起来都那么清楚。非常感谢!
  • @user1563247 好的,很高兴我能帮上忙!对不起,如果我看起来充满敌意,我只是不明白。即使我有错误的解决方案,但愿现在您拥有开始使用的工具。
  • 根本没有敌意 - 试图解释这样的事情的问题是,当我完成完整的解释时,你会留下一堵你解决的问题的文字墙这么快。实施已完成,并且运行良好,顺便说一句。
猜你喜欢
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多