根据数组在 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... }
以下代码段符合我从您的问题中了解到的内容。
通过、将字符串解析为数组,然后:
关联第二个数组的第0个元素与第一个数组的第0个元素
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
根据其他信息编辑的片段
我有以下字符串,我将把它们转换成两个单独的数组:
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... }
以下代码段符合我从您的问题中了解到的内容。
通过、将字符串解析为数组,然后:
关联第二个数组的第0个元素与第一个数组的第0个元素
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