如何在JavaScript中创建对象数组?

如何在JavaScript中创建对象数组?,javascript,json,regex,typescript,angular6,Javascript,Json,Regex,Typescript,Angular6,下面是我在使用JavaScript创建对象数组时遇到的问题。我收到错误消息,添加了新行,如下所示,我需要拆分消息并收集行号。如果是重复的错误消息,则行号应以逗号分隔 我通过一些丑陋的方式实现了,当我尝试对行数进行concat时,它添加了“未定义”字符串 此外,我可能需要针对大数据优化的解决方案。大多数情况下,我可能会收到3000到7000条错误消息。我使用的是Angular 6版本 我的期望输出如下所述 var errorMsg=`在第3行未找到记录的地址详细信息。 在第4行未找到记录的地址详

下面是我在使用JavaScript创建对象数组时遇到的问题。我收到错误消息,添加了新行,如下所示,我需要拆分消息并收集行号。如果是重复的错误消息,则行号应以逗号分隔

我通过一些丑陋的方式实现了,当我尝试对行数进行concat时,它添加了“未定义”字符串

此外,我可能需要针对大数据优化的解决方案。大多数情况下,我可能会收到3000到7000条错误消息。我使用的是Angular 6版本

我的期望输出如下所述

var errorMsg=`在第3行未找到记录的地址详细信息。
在第4行未找到记录的地址详细信息。
第5行的街道编号无效。
第6行的Zip无效。
第7行的Zip无效。
第11行的Zip无效`
var errorDisp=errorMsg.split(/^(.*)(\d.)/gm);
errorDisp=errorDisp.filter(函数(条目){
返回/\S/.test(条目);
});
var对象={};
var行=[];
errorDisp.forEach(函数(a、i、aa){
如果(i&1){
对象[aa[i-1]+=”,“+a;
}
});
console.log(对象)
您可以使用
/\s*(.*?)(\d+).$/
来获取用于分离捕获组的键和值。用于循环匹配并更新输出对象。如果密钥已存在,请更新它。否则,请向对象添加新键

var errorMsg=`在第3行未找到记录的地址详细信息。
在第4行未找到记录的地址详细信息。
第5行的街道编号无效。
第6行的Zip无效。
第7行的Zip无效。
第11行的Zip无效`
让regex=/\s*(.*)(\d+).$/gm,
输出={},
匹配;
while(match=regex.exec(errorMsg)){
常量[,键,值]=匹配;
if(输出[键])
输出[key]+=`,${value}`
其他的
输出[键]=值
}

console.log(输出)
这里是一个修改过的正则表达式,没有句点:

var errorDisp = errorMsg.split(/^(.*)(\d+)\./gm);
然后,在将
a
添加到逗号列表之前,请确保您检查了它是否有错误:

if (a) object[aa[i - 1]] += "," + a;

相同的错误消息总是相邻出现,或者任何一行都可能有错误消息?是的,相同的错误消息总是出现,但行号不同。我不知道JS有一个哈希结构
output={}
@sln,它只是一个空的