Javascript: как обрабатывать следующий элемент в json - плейлист - PullRequest
1 голос
/ 18 июня 2010

У меня есть приложение, которое создает список воспроизведения видео и возвращает их в формате json, идентификатор видео является «ключом», а затем к нему прикрепляется информация о видео.Идентификатор видео не является последовательным, «1234», «4234», «123», «5454» являются возможными идентификаторами, среди других.

У меня есть кнопка для переключения следующего видео, проблема в том, что я надеваюне знаю, как получить следующий элемент в массиве, если я не перебираю весь массив, который кажется очень неэффективным.Я использую jQuery, поэтому, если есть доступная функция, которая была бы превосходной.

Краткое изложение моего вопроса: Как мне эффективно выбрать следующий элемент в массиве, используя jQuery / javascript?

Ответы [ 2 ]

3 голосов
/ 18 июня 2010

Если вы управляете частью, создающей 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, который является массивом. Затем вы можете перебрать массив с числовым индексом, поэтому функция «следующее видео» будет иметь вид:

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

Подробнее о JSON можно прочитать здесь: http://json.org

0 голосов
/ 18 июня 2010

Поскольку вы не предоставляете никакого кода, это более общий ответ:

Сохраните индекс видео, которое вы сейчас воспроизводите.Поскольку он, вероятно, начинается с первого видео в массиве, индекс равен 0, например:

var current = 0;

Теперь, когда вы нажимаете какую-либо кнопку next, вы увеличиваете индекс и получаете соответствующее видео:

current++;
video = videos[current];
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...