Измените порядок массива объектов с помощью свойства объекта Javascript

# #javascript #firebase #algorithm

Вопрос:

Есть ли способ изменить порядок объекта или объектов в базе данных Firebase в реальном времени? (Firebase сохраняет его в отсортированном виде по ключам)

Я не мог этого понять, так что это то, что я делаю на стороне клиента

  1. Преобразование в массив объектов
  2. Отсортируйте массив по значению свойства (смотрите ниже)
  3. Измените положение (например, с 4-го на 1-е) и обновите необходимые индексы
  4. Пройдите по массиву и обновите индекс всех элементов в firebase

Мой цикл для шага 3 немного слишком сложен, есть ли эффективный способ ES6 для достижения того же самого?

Шаг 1: Данные из firebase:

 [
    id1: {
        name: 'name1',
        index: 3
    },
    id2: {
        name: 'name2',
        index: 0
    },
    id3: {
        name: 'name3',
        index: 1
    },
    id4: {
        name: 'name4',
        index: 2
    }
]
 

Шаг 2: Отсортируйте его

 const sortedList = list.sort((a, b) =>
    a.val.index > b.val.index ? 1 : b.val.index > a.val.index ? -1 : 0
  )

output = [
    id2: {
        name: 'name2',
        index: 0
    },
    id3: {
        name: 'name3',
        index: 1
    },
    id4: {
        name: 'name4',
        index: 2
    }
    id1: {
        name: 'name1',
        index: 3
    },
]
 

Шаг 3: Здесь мне нужна помощь с функцией обновления индексов при перемещении с одной позиции на другую