Javascript Can';在这段代码中不能定义正确的数组

Javascript Can';在这段代码中不能定义正确的数组,javascript,Javascript,我需要帮助以节点红色组织功能节点中的数组 数据有效时(标志=A)。。。运行良好 数据无效时(标志=else)。。。错误的分割。额外的数组wifiAccessPoints(answer.wifiAccessPoints)不能像应该的那样拆分,如:ssid、macAddress、signalStrength 下面,只有4个wifiAccessPoints,但实际上可以更多 // when flag = A //IWAP0108524A2232.9806N11404.9355E000.1061830

我需要帮助以节点红色组织功能节点中的数组

数据有效时(标志=A)。。。运行良好 数据无效时(标志=else)。。。错误的分割。额外的数组wifiAccessPoints(answer.wifiAccessPoints)不能像应该的那样拆分,如:ssid、macAddress、signalStrength

下面,只有4个wifiAccessPoints,但实际上可以更多

// when flag = A
//IWAP0108524A2232.9806N11404.9355E000.1061830323.8706000908000102460,095203671#

//IWAP01080524V0000.0000N00000.0000E000.1061830323.8706000908000102460,09520371,Home | 74-DE-2B-44-88-8C | 97和Home | 74-DE-2B-44-88-8C | 97和Home | 74-DE-2B-44-88-8C |

let answer={}
让elements=msg.payload.replace('#','').split(“,”),这将给出一个包含位的数组
//元素[0]是从IWAP01开始的长字符串
answer.command=elements[0]。substr(0,6)
让dateStr=elements[0]。substr(6,6)//eg“190215”2019年2月15日
answer.date=new date(Number(dateStr.substr(0,2))+2000,Number(dateStr.substr(2,2))-1,dateStr.substr(4,2))//080524-date
answer.valid=(元素[0]。substr(12,1)=“A”)//true或false-A或V
如果(答案有效){
设degreesN=Number(元素[0].substr(13,2))
设minutesN=Number(元素[0].substr(15,7))
设ns=elements[0].substr(22,1)//N或S
设degreesE=Number(元素[0].substr(23,3))
设minutesE=Number(元素[0].substr(26,7))
设ew=elements[0]。substr(33,1)//E或W
node.warn(`${degreesN}${minutesN}${ns}${degreesE}${minutesE}${ew}`)
答案:纬度=度N+分钟N/60//2232.9806N
如果(ns==“S”)回答。纬度=-answer.latitude
答案:经度=度+分钟/60
if(ew==“W”)answer.longitude=-answer.longitude//11404.9355E
}否则{
答案:纬度=0
答案:经度=0
}
answer.speedMoving=elements[0]。substr(34,5)//000.1
answer.angleDirection=elements[0]。substr(45,6)//323.87
answer.GSMsignal=elements[0].substr(51,3)//060
answer.satellites=elements[0]。substr(54,3)//009
answer.batteryLevel=元素[0]。substr(57,3)//080
//LBS数据
answer.mobileConcountycode=元素[1]//460
answer.mobileNetworkCode=元素[2]//0
answer.locationAreaCode=元素[3]//9520
answer.cellId=elements[4]//3671
//WIFI仅基于flag=else
//
//answer.wifiAccessPoints=元素[5]
//
answer.wifiAccessPoints=[]
if(answer.valid==“else”){
i=元素[4]+1//转到wifi基地
设wifiAccessPointsString=elements[5]。拆分(&)
让j;

对于(j=0;j假设,主要问题是检查此行中
'else'
false
的未激活值

answer.valid = elements[0].substr(12, 1) === "A"
以后在这一行检查时

if (answer.valid === "else") { // wrong, answer.valid contains a boolean
取代

if (!answer.valid) {
通过省略对未声明值的未使用赋值

i = elements[4] + 1 // ns: i never used
它应该运行

请测试结果并给出反馈

没有兴趣名称(msg)的函数{
让答案={}
让elements=msg.payload.replace('#','').split(“,”),这将给出一个包含位的数组
//元素[0]是从IWAP01开始的长字符串
answer.command=elements[0]。substr(0,6)
让dateStr=elements[0]。substr(6,6)//eg“190215”2019年2月15日
answer.date=new date(Number(dateStr.substr(0,2))+2000,Number(dateStr.substr(2,2))-1,dateStr.substr(4,2))//080524-date
answer.valid=elements[0]。substr(12,1)=“A”//true或false-A或V
如果(答案有效){
设degreesN=Number(元素[0].substr(13,2))
设minutesN=Number(元素[0].substr(15,7))
设ns=elements[0]。substr(22,1)//N或S
设degreesE=Number(元素[0].substr(23,3))
设minutesE=Number(元素[0].substr(26,7))
设ew=elements[0]。substr(33,1)//E或W
//ns:节点不存在!
//node.warn(`${degreesN}${minutesN}${ns}${degreesE}${minutesE}${ew}`)
log(`${degreesN}${minutesN}${ns}${degreesE}${minutesE}${ew}`)
答案:纬度=度N+分钟N/60//2232.9806N
如果(ns==“S”)回答。纬度=-answer.latitude
答案:经度=度+分钟/60
if(ew==“W”)answer.longitude=-answer.longitude//11404.9355E
}否则{
答案:纬度=0
回答,很长
if (!answer.valid) {
i = elements[4] + 1 // ns: i never used