如何在JavaScript中移除value字段重复的对象?
基于
value字段的数组对象去重方案 你之前的代码是对整个数组对象进行序列化去重,所以会把time/expire不同但value相同的项当成不同元素保留。要实现基于value字段的去重,可以用以下两种方法:
方法一:通过序列化value字段实现通用去重
利用Set记录已出现过的value序列化字符串,结合filter过滤重复项:
const seen = new Set(); const result = array.filter(item => { const valueKey = JSON.stringify(item.value); if (seen.has(valueKey)) return false; seen.add(valueKey); return true; });
这个方法适用于value结构不固定的场景,只要value内容完全一致就会被判定为重复。
方法二:提取value的唯一标识生成Key(性能更优)
如果value的结构固定(比如你示例中的departure.id、date.start、type组合起来就是唯一标识),可以直接拼接这些字段生成唯一Key,比JSON序列化性能更高:
const seen = new Set(); const result = array.filter(item => { const { departure, date, type } = item.value; const uniqueKey = `${departure.id}-${date.start}-${type}`; if (seen.has(uniqueKey)) return false; seen.add(uniqueKey); return true; });
这种方法避免了复杂的JSON序列化操作,适合结构稳定的业务场景。
以上两种方法都会保留数组中第一个出现的value对应的对象,后续重复的value项会被过滤掉。
内容的提问来源于stack exchange,提问作者Sahar
相关产品推荐
相关产品推荐

