Como faço para trocar dois itens em um observableArray?

Eu tenho um botão que move um item uma posição à esquerda em um observableArray. Eu estou fazendo da seguinte maneira. No entanto, a desvantagem é que categories () [index] é removido da matriz, descartando assim qualquer manipulação de DOM (por validação de jQuery no meu caso) nesse nó.

Existe uma maneira de trocar dois itens sem usar uma variável temporária para preservar o nó DOM?

<code>    moveUp: function (category) {
        var categories = viewModel.categories;
        var length = categories().length;
        var index = categories.indexOf(category);
        var insertIndex = (index + length - 1) % length;

        categories.splice(index, 1);
        categories.splice(insertIndex, 0, category);
        $categories.trigger("create");
    }
</code>

questionAnswers(4)

yourAnswerToTheQuestion