JS按sub_name属性去重vars数组返回嵌套数组问题排查
问题原因
你的removeDuplicates工具方法本身逻辑没有问题,错误出在对原数组的map处理逻辑上:
你当前的写法中,map的回调函数直接将removeDuplicates(o.vars, "sub_name")的返回值(即去重后的vars数组)作为每一项的返回结果,没有保留原对象的name、id等属性,最终得到的数组元素都是处理后的vars数组,和你预期的对象结构不符。
修复方案
两种常用实现方式:
方式1:不修改原数组,返回新数组(推荐)
使用展开运算符保留原对象的其他属性,仅替换vars为去重后的结果:
const processedArr = this.someArrayOfObjects.map(item => { return { ...item, vars: this.removeDuplicates(item.vars, "sub_name") } })
方式2:直接修改原数组
如果不需要保留原数据,可以用forEach直接修改每个元素的vars属性:
this.someArrayOfObjects.forEach(item => { item.vars = this.removeDuplicates(item.vars, "sub_name") })
内容的提问来源于stack exchange,提问作者t56k
相关产品推荐
相关产品推荐

