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

如何简洁替换数组中指定分类的记录 可使用lodash相关方法

数组指定分类数据批量替换实现方案

原生JS实现(无需额外依赖)

你的原有思路完全可行,原生JS可以直接用展开运算符简化为极简写法,逻辑清晰性能优异:

const targetCategory = 'platinum'
const result = [
  ...newPlatinumUsers,
  ...userCategory.filter(item => item.id !== targetCategory)
]

Lodash 实现

如果项目已经引入Lodash,可以用更语义化的_.reject方法实现,可读性更高:

const _ = require('lodash')
const targetCategory = 'platinum'
const result = _.concat(newPlatinumUsers, _.reject(userCategory, { id: targetCategory }))

以上两种实现的输出结果都和你给出的预期完全一致,时间复杂度均为O(n),和原实现性能持平但写法更简洁。

如果你需要严格保留原有分类的出现顺序(比如原有数组中gold出现在silver前面,替换后也要保留该顺序),可以使用分组实现:

const targetCategory = 'platinum'
// 按分类分组并记录顺序
const categoryMap = new Map()
userCategory.forEach(item => categoryMap.has(item.id) || categoryMap.set(item.id, []))
// 替换目标分类数据
categoryMap.set(targetCategory, newPlatinumUsers)
// 填充其他分类数据
userCategory.forEach(item => item.id !== targetCategory && categoryMap.get(item.id).push(item))
// 扁平化得到结果
const result = Array.from(categoryMap.values()).flat()

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.08 11:42:03