Допустим, что у вас есть массив объектов страницы в Javascript:Лучший способ найти следующие/предыдущие элементы в массиве javascript объектов?
pages = [{uid: 1, title: 'Home'},
{uid: 2, title: 'Products'},
{uid: 3, title: 'About'},
{uid: 4, title: 'Contact'}
]
Ваша цель заключается в создании способа, который, учитывая UID текущей страницы, возвращает тот, который рядом с ним или предшествующий ему (как определено порядком в массиве).
(обновлено) Примечание: Вы не имеете доступа к текущему объекту страницы, только его UID, так что вы не можете найти свою позицию, используя просто IndexOf()
nextPage = function (pages, currentPageUID){...}
previousPage = function(pages, currentPageUID){...}
В Javascript, что бы самый элегантный способ сделать это? Это простая проблема, но решения, о которых я думал, не могут отразить эту простоту, и я уверен, что есть такая возможность.
БОНУС
Тот же вопрос, но для CoffeeScript? (не уверен, как я вознагражу его в качестве бонуса, но надеюсь, вы будете чувствовать себя хорошо)
Рассматривали ли вы изменение структуры данных? Карта, где ключ является UUID, а значение - либо указатель на строку, либо, может быть, числовой индекс. Это концепция индекса базы данных. Если вы сделаете значение числовым индексом, вы можете просто добавить/вычесть, чтобы получить следующий/предыдущий. Если у вас есть дескриптор текущего значения, структура данных с двусвязным списком даст вам немедленный доступ к предыдущему и следующему. –