javascript 解析字符串并使用条件逻辑进行检查

标签 javascript

如果我有这样的数据

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"
  }

如何通过将此数据输入函数、将键解析为字符串值并使用条件逻辑来验证每个键值是否合适来循环执行此操作?

将一个字符串简化一点:

var myVar = "读取 12345:2 模拟输入 2";

我可以把它分成几部分:

var myVarParts = myVar.split("");

并为每个部分分配变量:

requestType = myVarParts[0];
console.log(requestType)

deviceAddress = myVarParts[1];
console.log(deviceAddress)

pointType = myVarParts[2];
console.log(pointType)

pointAddress = myVarParts[3];
console.log(pointAddress)

如果requestType读、写、释放,则尝试构建一些条件逻辑:

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");
  }

如果pointTypeanalogInput、analogValue、binaryValue、binaryInput,则很好。

有人可以给我一些提示,告诉我 bool JavaScript 函数是什么样子的吗?它可以循环这些数据并验证键看起来是否正常?

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"
  }

谢谢你,我正在努力学习 JavaScript。

最佳答案

您可以使用正则表达式^(read|write|release)\s(\d+:\d+)\s(analog|binary)(Input|Value)\s\d$以匹配模式。


  • (read|write|release)是请求类型的选项
  • (\d+:\d+)确保设备地址由用冒号分隔的数字组成
  • (analog|binary)(Input|Value)是点类型的选项
  • \d匹配末尾的单个数字

您可以使用Object.values并运行<Array>.every循环遍历这些值并确保它们都与模式匹配。

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)))

关于javascript 解析字符串并使用条件逻辑进行检查,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/70545201/

相关文章:

javascript - nodejs 在更改时重新导入文件

javascript - &lt;script&gt;window ["_GOOG_TRANS_EXT_VER"] = "1";&lt;/script&gt; 是什么意思

javascript - React Redux 状态不替换

javascript - 如何在 CQ 5 中配置内置表单组件?

javascript - 如何卡住javascript中的嵌套对象?

javascript - 无法更改数组中的值

javascript - 如何在页面加载时在特定 div 的所有 html 输入中插入一些值?

javascript - React.js 如何使用 getElementById 方法获取 props 中的 id?

javascript - 在查询生成器 Jquery 中获取 SQL 规则时,“IN”运算符无法正常工作

javascript - 正则表达式和 Handlebars