遍历对象生成接口提交JSON 解决forEach is not a function报错
解决方案
tagArray.forEach is not a function报错的核心原因是this.formGroup.value为对象类型,只有数组原型上挂载了forEach方法,对象无法直接调用该方法。
你注释的Object.entries遍历思路是可行的,只需要补充一步过滤逻辑:从表单对象中筛选出选中状态为真的标签ID,先转为标签数组再做后续拼接即可,完整修改代码如下:
const idArray = this.selectedReporters; // 存储上报人ID const formTagObj = this.formGroup.value; // 存储表单标签选中状态,结构一般为 {标签ID: 是否选中布尔值} // 从表单对象中提取选中的标签ID,生成标签数组 const tagArray = Object.entries(formTagObj) .filter(([tagId, isChecked]) => isChecked) // 只保留选中的标签 .map(([tagId]) => tagId) const tagArr = []; idArray.forEach((el) => { tagArray.forEach((ll) => { tagArr.push({ reporter: el, tag: ll }) }) }) const reporterTags = { reporter_tags: tagArr } console.log(reporterTags);
如果你的this.formGroup.value存储的结构不是{标签ID: 选中状态},而是其他对象结构,只需要调整上面tagArray的转换逻辑,把所有要提交的标签ID提取为一维数组即可,后面的笛卡尔积拼接逻辑不需要修改。
内容的提问来源于stack exchange,提问作者Okello Marvin
相关产品推荐
相关产品推荐

