You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

JavaScript中如何删除数组重复对象并保留用户最新选中值

问题根因

_.uniqBy 默认保留第一个出现的同标识元素,你每次将新选中的对象push到数组末尾,去重时会优先保留先插入的旧值,新值会被剔除。

解决方案

方案1:修改去重逻辑(最小改动适配现有代码)

反转数组后再去重,让后插入的最新元素被优先保留,去重完成后再反转回原有顺序即可:

uniqueFiles = (data) => {
  // 拷贝数组后反转,避免修改原数组顺序
  let unique = _.uniqBy([...data].reverse(), 'index').reverse()
  console.log('@@ array', unique)
  return unique
}

方案2:插入前清理旧值(性能更优)

插入新元素前先过滤掉同标识的旧元素,从源头避免重复,无需额外调用去重方法,数组较大时性能优势更明显:

generateExtraFieldData = (data, name, index, type, value, values) => {
  const { projectFloorData, unitModifiedData } = this.state
  let obj = projectFloorData[name]
  obj['data'] = data
  // 先移除原有同index的元素
  let tempArr = unitModifiedData.filter(item => item.index !== obj.index)
  tempArr.push(obj)

  this.setState({ unitModifiedData: tempArr })
}

内容的提问来源于stack exchange,提问作者Jonas

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.29 05:06:02