根据数组在 angular5 中的位置创建和关联数组

Create and relate arrays depending on their position in angular5

我有以下字符串,我将把它们转换成两个单独的数组:

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

每次出现符号“:”表示它是数组中的一个新值,如果有“,”它是一个值组。

我不确定仅使用 .split() 是否会正确分隔数组中的值。

之后我得到了一个类似的代码字符串,我将执行与上面相同的过程:

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

我需要关联这两个数组,其中 first 数组的 位置 0 的代码为 second 数组的位置 0

我不确定如何处理关于按位置关联数组的第二部分。

编辑

这是关系的一个例子:

第 0 位: 客户咨询 reenvío de pedido --> EQSOLREENVIO

位置 1: Equipamiento Perdido --> EQPER

位置 2: 客户取消了 Pedido cancelado --> EQCAN

位置 3: Pedido con documentació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. 通过字符串解析为数组,然后:

  2. 关联第二个数组的第0个元素与第一个数组的第0个元素

  3. Returns 一个 Object(作为关联 Array

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

根据其他信息编辑的片段