起因
一个业务场景中,最终得到一串字符"status[0]=value1&status[1]=value2"
通过解析,理应得到一个数组,却得到一个对象
于是展开问题排查
最终发现是qs.parse 这个地方出了问题
排查结果
qs解析这种带下标的字符串时,默认会转换成数组
const str = qs.parse('a[0]=b&a[1]=&a[2]=c');
console.log(str)
// 打印结果 a: ['b', '', 'c']
当这个下标太大的时候,发现出现的结果不是一个数组导致代码报错;
于是去看了下文档
当长度超过20时,这个默认数组就变成对象了;
要解决这个问题只需要配置一下option
const str = qs.parse('a[0]=b&a[1]=&a[22]=c',{ arrayLimit: 30 });