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.
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)))Object#values , obtenga la lista de valores del objeto.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);