Javascript算法遍历索引

时间:2016-09-08 15:47:46

标签: javascript jquery algorithm

我有6个由课程标识的元素:.item-1.item-2,...,.item-6。 如果用户点击某个项目,则该项目应重命名为.item-1,并且所有其他项目应相应地重命名,顺序相同。例如,如果用户点击.item-3

1。 2。 3。 4。 5。 6
点击 - ^

结果: 5。 6。 1。 2。 3。 4

我想知道是否有比两个循环更好的算法(一个用于clicked-item(3)到end-of-series(6),一个用于start-of-series(1)到clicked-item(3) ))。

这是我已有的代码:

这就是HTML的结构: <div class="showcase-container showcase-container-1"></div>

$(".showcase-container").click(function()
{
    var numberOfItems = $(".showcase-container").length;
    var clickedItem = $(this).attr("class").match(/showcase-container-[1-9]*/);
    clickedItem = parseInt(clickedItem[0].replace("showcase-container-", ""));

    $(".showcase-container").removeClass("showcase-container-first");
    $(this).addClass("showcase-container-first");

    var currentItem = clickedItem;

    while(currentItem < numberOfItems)
    {
        $(".showcase-container").eq(currentItem-1)
            .removeClass("showcase-container-" + currentItem)
            .addClass("showcase-container-" + (parseInt(currentItem) + 1));

        currentItem++;
    }
});

1 个答案:

答案 0 :(得分:0)

使用整数模的伪代码:

K = ItemClicked (zero-based)
N = Items.length
for i = 0 to N - 1
    Items[i].Name = "Item" + 1 + (N + i - K) % N   

对于您的示例K = 2,N = 6,并且对于第一个条目
 num = 1 + (6 + 0 - 2) modulo 6 = 1 + 4 = 5