提问人:seaworthiness 提问时间:8/18/2023 最后编辑:Barmarseaworthiness 更新时间:8/18/2023 访问量:36
无法读取 parseParsedMessage 函数中 for 循环中未定义的属性(读取“长度”)
Cannot read properties of undefined (reading 'length') at for loop in parseParsedMessage function
问:
function parseMessage(message) {
let retMessage = '';
const startIndex = message.indexOf("### Rule ID:");
const endIndex = message.indexOf("]");
if(startIndex !== -1 && endIndex !== -1 && startIndex < endIndex){
return message.substring(startIndex, endIndex);
}
else{
return retMessage;
}
}
function parseParsedMessage(inputString){
let messagePart = inputString.split('--');
finalMessagePart = messagePart[1];
finalElements = [];
let z = 1;
for(let i = finalMessagePart.length+1; i > finalMessagePart.length; i--){
let elements = finalMessagePart.trim().split('-');
finalElements.push(elements);
}
return finalElements;
}
let message = "sbkjeheglhlasd";
let result = parseMessage(message);
let parsedResult = parseParsedMessage(result);
if(parsedResult.length === 0) {
console.log("Rule ID does not follow the format");
}
else{
console.log(parsedResult[0][0]);
console.log(parsedResult[0][1]);
console.log(parsedResult[0][2]);
console.log(parsedResult[0][3]);
console.log(parsedResult[0][4]);
console.log(parsedResult[0][5]);
console.log(parsedResult[0][6].replace(']',''));
}
我正在尝试在规则 ID 不遵循特定形式时处理异常,如下所示 消息:
i have a fox with rule id ### tm_violation tm_location tm_market"
但是我收到此错误
TypeError:无法读取 undefined 的属性(读取“length”)
我该如何处理?
答:
0赞
Barmar
8/18/2023
#1
parseParsedMessage()
应该检查是否至少返回两个部分。split()
function parseParsedMessage(inputString){
let messagePart = inputString.split('--');
if (messageParse.length < 2) {
return [];
}
finalMessagePart = messagePart[1];
finalElements = [];
let z = 1;
for(let i = finalMessagePart.length+1; i > finalMessagePart.length; i--){
let elements = finalMessagePart.trim().split('-');
finalElements.push(elements);
}
return finalElements;
}
评论
0赞
seaworthiness
8/18/2023
我的问题是我的无效规则 ID 也以相同的方式开始,但并没有完全遵循格式。例如无效的规则 ID ### 规则 ID:[asdfghjklT]
0赞
Barmar
8/18/2023
然后添加更多格式检查parseMessage
0赞
seaworthiness
8/18/2023
你能提供一些意见吗?我已经使用 log 语句进行了调试
0赞
Barmar
8/18/2023
我将验证移到了 .parseParsedMessage()
评论
result
是一个空字符串,但您尝试拆分它