Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

193
Views
JavaScript analiza la cadena y verifica con la lógica condicional

Si tengo datos que se ven así

 const reqObjects = { "VAV1": "read 12345:2 analogInput 2", "VAV2": "read 12345:3 analogInput 1", "VAV3": "read 12345:4 analogInput 1", "VAV4": "read 12345:5 analogInput 2", "VAV5": "read 12345:6 analogInput 1", "VAV6": "read 12345:7 analogInput 2", "VAV7": "read 12345:8 analogInput 1", "VAV8": "read 12345:9 analogInput 1", "VAV9": "read 12345:10 analogInput 2", "VAV10": "read 12345:11 analogInput 1" }

¿Cómo podría recorrer esto ingresando estos datos en una función, analizar claves en valores de cadena y usar lógica condicional para verificar que cada uno de los valores clave parezca apropiado?

Simplificando esto un poco para una cadena:

var myVar = "read 12345:2 analogInput 2";

Puedo dividir esto en partes:

var myVarParts = myVar.split(" ");

Y asigna variables a cada pieza:

 requestType = myVarParts[0]; console.log(requestType) deviceAddress = myVarParts[1]; console.log(deviceAddress) pointType = myVarParts[2]; console.log(pointType) pointAddress = myVarParts[3]; console.log(pointAddress)

Tratando de inventar alguna lógica condicional si el tipo de requestType es bueno si es una read, write, release :

 if(requestType === "read"){ console.log("Good on read"); }else if(requestType === "write"){ console.log("Good on write"); }else if(requestType === "release"){ console.log("Good on release"); }else{ console.log("BAD requestType"); }

El pointType es bueno si es analogInput, analogValue, binaryValue, binaryInput .

¿Podría alguien darme un consejo sobre cómo se vería una función booleana de JavaScript que podría recorrer estos datos y verificar que las claves se vean bien?

 const reqObjects = { "VAV1": "read 12345:2 analogInput 2", "VAV2": "read 12345:3 analogInput 1", "VAV3": "read 12345:4 analogInput 1", "VAV4": "read 12345:5 analogInput 2", "VAV5": "read 12345:6 analogInput 1", "VAV6": "read 12345:7 analogInput 2", "VAV7": "read 12345:8 analogInput 1", "VAV8": "read 12345:9 analogInput 1", "VAV9": "read 12345:10 analogInput 2", "VAV10": "read 12345:11 analogInput 1" }

Gracias, estoy tratando de aprender JavaScript.

about 4 years ago · Juan Pablo Isaza
2 answers
Answer question

0

Puede usar la expresión regular ^(read|write|release)\s(\d+:\d+)\s(analog|binary)(Input|Value)\s\d$ para hacer coincidir el patrón.


  • (read|write|release) son las opciones para el tipo de solicitud
  • (\d+:\d+) se asegura de que la dirección del dispositivo esté formada por números separados por dos puntos
  • (analog|binary)(Input|Value) son las opciones para el tipo de punto
  • \d coincide con el único dígito al final

Puede usar Object.values y ejecutar <Array>.every para recorrer los valores y asegurarse de que todos coincidan con el patrón.

 const regex = /^(read|write|release)\s(\d+:\d+)\s(analog|binary)(Input|Value)\s\d$/; const reqObjects = { "VAV1": "read 12345:2 analogInput 2", "VAV2": "read 12345:3 analogInput 1", "VAV3": "read 12345:4 analogInput 1", "VAV4": "read 12345:5 analogInput 2", "VAV5": "read 12345:6 analogInput 1", "VAV6": "read 12345:7 analogInput 2", "VAV7": "read 12345:8 analogInput 1", "VAV8": "read 12345:9 analogInput 1", "VAV9": "read 12345:10 analogInput 2", "VAV10": "read 12345:11 analogInput 1" } console.log(Object.values(reqObjects).every(val => val.match(regex)))

about 4 years ago · Juan Pablo Isaza Report

0

  • Usando Object#values , obtenga la lista de valores del objeto.
  • Usando Array#every , repita lo anterior para validar cada elemento, puede modificar los ayudantes de validación si es necesario.

 const reqObjects = { "VAV1": "read 12345:2 analogInput 2", "VAV2": "read 12345:3 analogInput 1", "VAV3": "read 12345:4 analogInput 1", "VAV4": "read 12345:5 analogInput 2", "VAV5": "read 12345:6 analogInput 1", "VAV6": "read 12345:7 analogInput 2", "VAV7": "read 12345:8 analogInput 1", "VAV8": "read 12345:9 analogInput 1", "VAV9": "read 12345:10 analogInput 2", "VAV10": "read 12345:11 analogInput 1" }; const validateRequestType = type => ['read', 'write', 'release'].includes(type); const validatePointType = type => ['analogInput', 'analogValue', 'binaryValue', 'binaryInput'].includes(type); const validate = str => { const [requestType, deviceAddress, pointType, pointAddress] = str.split(' '); return validateRequestType(requestType) && validatePointType(pointType); } const valid = Object.values(reqObjects).every(validate); console.log(valid);

about 4 years ago · Juan Pablo Isaza Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!