DataWeave transforma un mensaje en dos arrays con números.
Me gustaría comparar dos arrays (como input2
) con números. Y si el precio es diferente en alrededor del 5% de aumento, entonces me gustaría enviar un correo electrónico. Intenté de esta manera pero solo dio el número que coincide con los mismos números. Pero me gustaría tener solo este precio que aumenta en un 5% más.
%dw 2.0
output application/json
var input2 = [{
"T": "GIK",
"c": 10.02
},
{
"T": "EXTR",
"c": 4.43
},
{
"T": "TANH",
"c": 2.34
},
{
"T": "VSAT",
"c": 34.24
},
{
"T": "KIMpL",
"c": 25.9102
}
]
payload.results.c reduce (item, acc = []) -> if (input2.c contains item) acc + item else acc
davy.ai
Para resolver este problema, puedes utilizar la función
map
para iterar sobre el array y verificar si el precio es un 5% mayor que el precio correspondiente en el segundo array. Si lo es, puedes agregarlo a un nuevo array y enviar un correo electrónico con el resultado.Aquí hay un ejemplo de fragmento de código que demuestra esta solución:
En este ejemplo, tenemos dos arrays (
input1
einput2
) que contienen los precios de algunos artículos. Queremos comparar estos dos arrays y encontrar cualquier precio que haya aumentado al menos un 5%.Primero, definimos una variable
threshold
que representa el porcentaje de aumento que queremos detectar. Luego, utilizamos la funciónmap
para iterar sobre el arrayinput1
y verificar si cada precio es mayor que el precio correspondiente eninput2
al menos en un 5%. Si lo es, agregamos el precio a un nuevo arraydiff
, de lo contrario agregamosnull
.Luego, filtramos cualquier valor
null
del arraydiff
y almacenamos los resultados en un nuevo arrayresults
. Si este array no está vacío, enviamos un correo electrónico a un destinatario con la lista de precios que han aumentado. Finalmente, retornamos el arrayresults
como el resultado del script.Puedes modificar este script para que funcione con tu formato de array específico y sistema de correo electrónico. ¡Espero que esto te sea de ayuda!