JS for循环中push数组元素未达预期效果的问题咨询
问题原因
- 核心问题是函数返回值错误:循环中每次匹配到的分类对象都会覆盖
res变量,循环结束后仅返回最后一次匹配到的单个分类对象,而非完成所有元素追加后的完整arrayProducts数组。 - 次要问题:循环变量
item未加声明关键字,会隐式挂载为全局变量,存在变量污染风险。
你的元素追加逻辑本身是正确的,运行原代码时arrayProducts数组已经被修改为你预期的结构,只是打印的返回值不符合预期。
修正代码
function add(array, bigTable) { for (const item of array) { const matchItem = bigTable.find(x => x.nom === item.famille.nom); if (matchItem) { matchItem.produits.push(item) } else { console.log('Doesnt exist') } } // 返回修改后的完整数组 return bigTable } console.log(add(arraytoAdd, arrayProducts))
运行上述代码即可得到你预期的finalResult结构。
内容的提问来源于stack exchange,提问作者Taieb
相关产品推荐
相关产品推荐

