代码之家  ›  专栏  ›  技术社区  ›  sam

javascript:如何处理json中的下一个项目-播放列表

  •  1
  • sam  · 技术社区  · 15 年前

    我有一个应用程序,它创建一个视频播放列表,并以JSON格式返回,视频ID是“键”,然后它附加了视频信息。视频ID不是连续的,“1234”、“4234”、“123”、“5454”等可能的ID。

    我有一个按钮可以切换下一个视频,问题是我不知道如何在数组中获得下一个项目,除非我循环整个数组,这看起来效率很低。我使用的是jquery,所以如果有可用的函数,那就非常好了。

    我的问题总结:如何使用jquery/javascript有效地选择数组中的下一个项?

    2 回复  |  直到 15 年前
        1
  •  3
  •   T.J. Crowder    15 年前

    如果您控制了创建JSON的部分,我会将其更改为实际返回一个数组。如果没有,我可能会循环一次从JSON数据创建的对象,创建一个数组:

    var list, name;
    list = [];
    for (name in obj) {
        list.push({
            key: name,
            value: obj[name]
        });
    }
    

    然后您可以使用一个数字索引进行浏览。现在,我保留了姓名/钥匙。如果不需要,如果只需要值,数组就可以直接保存这些值。


    编辑 啊,很好,你控制着JSON。然后我输出json如下:

    {
        videos: [
            "1234",
            "4234",
            "123",
            "5454"
        ]
    }
    

    一旦反序列化,将导致具有属性的对象 videos 它是一个数组。然后,您可以使用数字索引在数组中循环,因此“Next video”函数将是:

    function showNextVideo(videos, index) {
        ++index;
        if (index >= videos.length) {
            index = 0;
        }
        showVideo(videos[index]);
    }
    

    您可以在这里阅读有关JSON的更多信息: http://json.org

        2
  •  0
  •   Felix Kling    15 年前

    由于您没有提供任何代码,因此这是一个更一般的答案:

    保存当前正在播放的视频的索引。因为它可能从数组中的第一个视频开始,所以索引是 0 ,例如:

    var current = 0;
    

    现在,每当你点击一些 next 按钮,增加索引并获得相应的视频:

    current++;
    video = videos[current];