Создавайте и связывайте массивы в зависимости от их положения в angular5 - PullRequest
0 голосов
/ 04 октября 2019

У меня есть следующие строки, которые я преобразую в два отдельных массива:

Cliente solicita reenvío de pedido:Equipamiento Perdido:Pedido cancelado a petición de cliente:Pedido con documentación pendiente:Pedido en incidencia,Pedido en incidencia,Pedido en incidencia,Pedido en incidencia,Pedido en incidencia

Каждый раз, когда появляется символ ": ", это означает, что его новое значение внутри массива иесли theres ", " - это группа значений.

Я не уверен, что при использовании просто .split () он будет правильно разделять значения в массиве.

После этого у меня есть похожая строка с кодами, которую я бы сделал той же процедурой, что и выше:

EQSOLREENVIO:EQPER:EQCAN:EQRECHKODOC:EQAUS,EQCDE,EQDDE,EQINACCE,EQVAC:EQINDEV:EQCAMBIODI,EQENV,EQFECHA,EQFIESTA,EQINCITRASP:EQENT:EQDEV:EQRCH:EQADMIPDV:EQCRE,EQRETENER:EQRECOOFI

Мне нужно связать эти два массива, где позиция 0 массива first имеет коды position 0 массива second .

Я не уверен, как подойти к этой второй части насвязывая массивы по их позициям.

РЕДАКТИРОВАТЬ :

Вот пример отношения:

Позиция 0: Cliente solicita reenvío de pedido ->EQSOLREENVIO

Положение 1: Equipamiento Perdido -> EQPER

Положение 2: Pedido cancellado a pétición de cliente -> EQCAN

Позиция 3: Pedido con documentmentación pendiente -> EQRECHKODOC

Позиция 4: Pedido en incidencia -> EQAUS, EQCDE, EQDDE, EQINACCE, EQVAC

Таким образом, массив должен выглядеть примерно так:

Array { 0: Cliente solicita reenvío de pedido
             { 0: EQSOLREENVIO }
        1: Equipamiento Perdido
             { 0: EQPER }
        2: Pedido cancelado a petición de cliente
             { 0: EQCAN }
        3: Pedido con documentación pendiente
             { 0: EQRECHKODOC }
        4: Pedido en incidencia
             { 0: EQAUS
               1: EQCDE
               2: EQDDE... }

1 Ответ

1 голос
/ 04 октября 2019

Следующий фрагмент делает то, что я понял из вашего вопроса.

  1. Анализирует Strings в Array на , затем :

  2. Связывает второй элемент Array с первым элементом 0th массива

  3. Возвращает Объект (как ассоциативный Массив )

const first = 'Cliente solicita reenvío de pedido:Equipamiento Perdido:Pedido cancelado a petición de cliente:Pedido con documentación pendiente:Pedido en incidencia,Pedido en incidencia,Pedido en incidencia,Pedido en incidencia,Pedido en incidencia'

const second = 'EQSOLREENVIO:EQPER:EQCAN:EQRECHKODOC:EQAUS,EQCDE,EQDDE,EQINACCE,EQVAC:EQINDEV:EQCAMBIODI,EQENV,EQFECHA,EQFIESTA,EQINCITRASP:EQENT:EQDEV:EQRCH:EQADMIPDV:EQCRE,EQRETENER:EQRECOOFI'

const separate = (s) => {
  return s.split(':').map(e => e.split(','))
}

const relate = (s1, s2) => {
  const sep1 = separate(s1)
  const sep2 = separate(s2)
  const obj1 = {}
  sep1.forEach((e, i) => {
    if (e.length) e = e[0]
    if (!obj1[e]) obj1[e] = []
    obj1[e] = sep2[i]
  })
  return obj1
}

console.log(relate(first, second)) // as an object containing arrays
console.log(Object.entries(relate(first, second))) // as array

СНИПЕТ РЕДАКТИРОВАН В СООТВЕТСТВИИ С ДОПОЛНИТЕЛЬНОЙ ИНФОРМАЦИЕЙ

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...