#javascript #arrays #function #audio
#javascript #массивы #функция #Аудио
Вопрос:
Я получил функцию, которая работает наполовину:
function prevTrack() {
if (playlist_index == (playlist.length - 0)) {
playlist_index = -1;
} else {
playlist_index--;
}
playlist_status.innerHTML = playlist[playlist_index];
audio.src = dir playlist[playlist_index] ext;
audio.play();
}
Я уверен, что ошибка в playlist_index = -1;
может кто-нибудь, пожалуйста, скажите мне, как настроить таргетинг на последний элемент в массиве?
так что это было бы playlist_index = ???;
Комментарии:
1. Похоже, вы пытаетесь заставить playlist_index начинаться с 0, когда он превышает последний допустимый индекс. Это правильно?
2. Я пытаюсь сделать так, чтобы, если нажата кнопка prevbtn и воспроизводимая песня была первой песней в массиве плейлистов, она переходила к последней песне массива, я надеюсь, это имеет смысл 🙂
3. Эта функция предназначена для следующего tnt и работает так, как должна: функция switchTrack(next){ if(playlist_index == (playlist.length -1)) { playlist_index = 0; } else { playlist_index ; }
4. этот код работает для ‘nextbtn’, когда воспроизводится последняя дорожка и нажата кнопка nextbtn, она переходит к первой песне, строка playlist_index = 0; выполняется и переходит к первой дорожке, я пытаюсь сделать обратное с ‘prevbtn’, если (playlist_index == (список воспроизведения.длина -0)){ playlist_index = -1; (я думал, что это приведет к тому, что индекс списка воспроизведения перейдет к последней песне в массиве, но это не работает. я думал, что код playlist_index = -1; сделает это, но это не так!
5. Я думаю
playlist_index == (playlist.length - 0)
, что должно бытьplaylist_index == 0
иplaylist_index = -1;
должно бытьplaylist_index = playlist.length - 1;
.
Ответ №1:
Установка индекса в -1 для получения последнего элемента напоминает мне python … в любом случае это не работает в JS. Вы должны установить индекс на playlist.length - 1
.
Комментарии:
1. if(playlist_index == 0) { playlist_index = (playlist.length -1); это исправило,
Ответ №2:
я думаю playlist_index = playlist.legth - 1
Комментарии:
1. я попробовал это, мой брат … без шампанского. Я изо всех сил пытаюсь понять, почему этот код работает: if(playlist_index == (playlist.length -1)) { playlist_index = 0; этот код работает, если воспроизводимый звук является последним объектом в массиве, он переходит к первому объекту. итак, как я могу заставить его работать, но вобратный if(playlist_index == (playlist.length -0)) { playlist_index = -1; эта строка здесь, похоже, не работает
2. В первом случае вы говорите «if (lastIndex) go firstIndex», но во втором случае вы говорите «if (never) go oneBeforeFirstIndex». «Если (никогда)» — это потому
playlist_index == playlist.length
, что никогда не будет истинным (если только playlist_index не разрешено увеличивать больше, чем должно).playlist.length - 1
является самым большим допустимым индексом.
Ответ №3:
Вы хотите установить playlist_index на последний элемент в массиве, если индекс равен нулю, или на первый элемент в массиве?
const playlist_index = playlist_index === 0
? playlist_index = plalist.length - 1
: playlist_index--;
или
const playlist_index = playlist_index === firstValueOfArray
? playlist_index = playlist.length - 1
: playlist_index--;
Ответ №4:
Похоже, вы пытаетесь заставить индекс перемещаться, так сказать, «по всему миру». Есть простой способ сделать это с %
помощью оператора modulo .
const list = ['a', 'b', 'c']
for (let offset = 0; offset < 10; offset ) {
const item = list[offset % list.length];
console.log(item);
}
таким образом, вы можете заменить
if (playlist_index == (playlist.length - 0)) {
playlist_index = -1;
} else {
playlist_index--;
}
с помощью
playlist_index = (playlist.length playlist_index - 1) % playlist.length;