получите предыдущие и следующие объекты в массиве

у меня есть массив чисел

var projects = [ 645,629,648 ];

и номер 645

я должен получить следующее (629) и предыдущий (648) числа?

я могу сделать это с jQuery?

14
задан eyalb 23 March 2010 в 08:25
поделиться

3 ответа

Вы можете сделать его немного короче, используя jquery $. InArray () метод с модулем:

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];
}
44
ответ дан 1 December 2019 в 06:19
поделиться

Я не знаю о 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 () .

4
ответ дан 1 December 2019 в 06:19
поделиться

Вам нужно только один раз отсортировать массив, после чего вы можете просто использовать код, начинающийся с // 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]);
2
ответ дан 1 December 2019 в 06:19
поделиться
Другие вопросы по тегам:

Похожие вопросы: