@hifProg

Как на основе одного массива заменить элементы у другого массива?

Как на основе одного массива объектов заменить или отсортировать строки у другого массива?
Есть массив объектов arrObj отсортированный по parentId и form.order и есть массив строк arrStr.
const arrObj = [
  {
    form: {
        id: 3,
        order: 0,
        isReg: true
    },
    parentId: 19
},
{
    form: {
        id: 1,
        order: 1,
        isReg: true
    },
    parentId: 19
}, 
{
    form: {
        id: 5,
        order: 7,
        isReg: false
    },
    parentId: 19
}
{
    form: {
        id: 5,
        order: 1,
        isReg: true
    },
     parentId: 22
},
{
    form: {
        id: 2,
        order: 2,
        isReg: true
    },
     parentId: 22
},
{
    form: {
        id: 3,
        order: 0,
        isReg: true
    },
     parentId: 25
},
{
    form: {
        id: 1,
        order: 1,
        isReg: true
    },
     parentId: 25
},
]

const arrStr = [
   "1\55",
   "1\22",
   "1\22\2",
   "1\22\5",
   "1\19",
   "1\19\1",
   "1\19\5",
   "1\19\3",
   "1\25",
   "1\25\3",
   "1\25\1",
]


Расшифровка строки в массиве "1\22\2"
1 - какое то число, 22 - номер родителя (совпадает с parentId в массиве arrObj), 2 - id дочернего элемента (совпадает с id в form в массиве arrObj)

Массив arrObj отсортирован нужным образом на основе parentId и form.order где и должна соблюдаться последовательность id в массиве arrStr в соответствии с order (от меньшего к большему) в массиве arrObj , т.е массив arrStr должен выглядеть так

const arrStr = [
   "1\55",          // бывают 2-х уровневые их трогать не надо
   "1\22",          // группа начинается с номера родителя трогать не надо
   "1\22\5",      // order 1 в массиве arrObj 
   "1\22\2",      // order 2 в массиве arrObj 
   "1\19,
   "1\19\3",     // order 0 в массиве arrObj
   "1\19\1",     // order 1 в массиве arrObj
   "1\19\5",     // order 7 в массиве arrObj
   "1\25",
   "1\25\3",
   "1\25\1",
]
  • Вопрос задан
  • 107 просмотров
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через центр авторизации
Похожие вопросы
Artezio Нижний Новгород
от 130 000 до 180 000 ₽
Artezio Москва
от 160 000 до 220 000 ₽
Artezio Минск
от 2 800 до 3 300 $