Get prev и next items в массиве
i имеет массив чисел
var projects = [ 645,629,648 ];
и число 645
Мне нужно получить следующие (629) и предыдущие (648) числа?
Можно ли это сделать с помощью jquery?
Ответы
Ответ 1
Вы можете сделать это немного короче, используя jquery $.inArray()
method с модулем:
var p = [ 645,629,648 ];
var start = 645;
var next = p[($.inArray(start, p) + 1) % p.length];
var prev = p[($.inArray(start, p) - 1 + p.length) % p.length];
Или, на основе функции:
function nextProject(num) {
return p[($.inArray(num, p) + 1) % p.length];
}
function prevProject(num) {
return p[($.inArray(num, p) - 1 + p.length) % p.length];
}
Ответ 2
Я не знаю о jQuery, но довольно просто создать что-то самостоятельно (при условии, что у вас всегда есть уникальные числа в вашем массиве):
var projects = [ 645,629,648 ];
function next(number)
{
var index = projects.indexOf(number);
index++;
if(index >= projects.length)
index = 0;
return projects[index];
}
Вызов next()
с номером проекта возвращает следующий номер проекта. Что-то очень похожее можно сделать для функции prev()
.
Ответ 3
Вам нужно только отсортировать массив один раз после этого, вы можете просто использовать код, начинающийся с //start
Если номер отсутствует, ничего не выводится
var projects = [ 645, 629, 648 ], number = 645, i = -1;
projects.sort(function(a, b) {
return a > b ? 1 : -1;
});
//start
i = projects.indexOf(number);
if(i > 0)
alert(projects[i-1]);
if(i < (projects.length - 1) && i >= 0)
alert(projects[i+1]);