Предположим, у меня есть индексированный массив объектов, таких как строки, содержащие популярную народную песню;)
var lyrics = [
{line : 2, words : "He's a lumberjack and he's okay"},
{line : 1, words : "I'm a lumberjack and I'm okay"},
{line : 3, words : "He sleeps all night and he works all day"}
];
Мой компаратор отобразит объекты в представлении в соответствии с индексом каждого объекта. Я хочу иметь возможность выполнять три задачи в этом массиве:
Задание 1) Переиндексировать при перетаскивании
Изменение порядка объектов с помощью перетаскивания. Предположим, я уже знаю, как реализовать перетаскивание. Пример задачи: перетащите «Он дровосек, и он в порядке» из индекса «1» в после «Я дровосек, и я в порядке». «Он дровосек, и он в порядке» теперь должен занимать индекс «2», а «Я дровосек и все в порядке» должен занимать индекс «1». Полученный массив должен быть:
var lyrics = [
{line : 1, words : "I'm a lumberjack and I'm okay"},
{line : 2, words : "He's a lumberjack and he's okay"},
{line : 3, words : "He sleeps all night and he works all day"}
];
Задание 2) Переиндексировать при вставке
Добавить объект в любую точку массива, переиндексировать все элементы в массиве. Пример задачи: добавить объект «Я сплю всю ночь и работаю весь день» в качестве второго элемента в массиве. Полученный массив должен быть:
var lyrics = [
{line : 1, words : "I'm a lumberjack and I'm okay"},
{line : 2, words : "I sleep all night and I work all day"},
{line : 3, words : "He's a lumberjack and he's okay"},
{line : 4, words : "He sleeps all night and he works all day"}
];
Задача 3) Переиндексировать при удалении
Удалить объект из массива и переиндексировать все элементы в массиве. Так, например, если объект с индексом «3» был удален, результирующий массив должен быть:
var lyrics = [
{line : 1, words : "I'm a lumberjack and I'm okay"},
{line : 2, words : "I sleep all night and I work all day"},
{line : 3, words : "He sleeps all night and he works all day"}
];
У меня нет степени CS, поэтому я немного озадачен тем, какой алгоритм поможет мне справиться с этим. Может ли кто-нибудь указать мне правильное направление?
Я работаю с javascript, поэтому, если кто-нибудь знает что-то, что делает выше, я весь в ушах.