1

Tengo la siguiente función donde itera el grupo de objetos tags para poder consultar un dato de cada objeto con una librería,

    //Esta es la lista a iterar

var tags = ["Contador_Turno", "Contador_Pedido", "Paquetes", "Tarimas"]

readTag(plc) {
    const json = [];
    this.tags.forEach(tag => {
       //Aqui se itera cada tag (por ejemplo "Contador_Turno" y se utiliza una libreria para consultar el valor de cada tag)
        plc.read(`${tag}`).then(data => {
            //Aqui es donde trato de asignar los valores correspondientes de cada tag para formar un array json 
            json.push(tag, data)
            console.log(json)
        })
    });
}

la salida de esa función en consola es la siguiente:

[ 'Contador_Pedido', 66 ]
[ 'Contador_Pedido', 66, 'Paquetes', 1 ]
[ 'Contador_Pedido', 66, 'Paquetes', 1, 'Contador_Turno', 66 ]
[
  'Contador_Pedido',
  66,
  'Paquetes',
  1,
  'Contador_Turno',
  66,
  'Tarimas',
  0
]

Estoy tratando de que el json quede de la siguiente manera que cada tag quede con su valor correspondiente

[{'Contador_Pedido': 66, 'Paquetes': 1, 'Contador_Turno': 66, 'Tarimas': 0}]

les agradeceria que me ayudaran a ver donde esta el error

Saul Espinoza
  • 585
  • 1
  • 5
  • 22

2 Answers2

0

Para crear objetos dentro de un arreglo sería

readTag(plc) {
    const json = [];
    this.tags.forEach(tag => {
        plc.read(`${tag}`).then(data => {
            json.push({ tag: data })
            console.log(json)
        })
    });
}

Sólo te faltaba agregar los símbolos de apertura y cierre propios de un objeto.

Nos comentas si te sirvió

Paulo Urbano Rivera
  • 4,432
  • 1
  • 14
  • 29
0

Podrias utilizar map en vez de foreach:

const json = [];
json = this.tags.map(tag => {
    plc.read(`${tag}`).then(data => {
        return(tag,data)
        console.log(json)
    })
});