javascript - 使用 Array.prototype.filter() 不会对数组数组进行重复数据删除
问题描述
我有以下数据正在尝试重复数据删除:
实际的
var data = [
['dupeValue', { data: 123 }],
['dupeValue', { data: 123 }],
['otherValue', { data: 1111111 }],
['dupeValue', { data: 123 }]
]
预期的
var data = [
['dupeValue', { data: 123 }],
['otherValue', { data: 1111111 }]
]
我尝试了以下方法,但不起作用:
data.filter((value, i, arr) => {
return value[0] !== arr[i][0]
})
// outputs []
我错过了什么?
var data = [
['dupeValue', { data: 123 }],
['dupeValue', { data: 123 }],
['otherValue', { data: 1111111 }],
['dupeValue', { data: 123 }]
]
var result = data.filter((value, i, arr) => {
return value[0] !== arr[i][0]
})
console.log(result)
解决方案
您可以使用 areduce()
映射到对象并Object.values()
获取结果数组
var data = [
['dupeValue', { data: 123 }],
['dupeValue', { data: 123 }],
['otherValue', { data: 1111111 }],
['dupeValue', { data: 123 }]
]
var result = Object.values(data.reduce((a, c) => (a[c[0]] = c, a), {}))
console.log(result)
推荐阅读
- sql - 如何以最简单的方式在 SQL Developer 中定义和使用 Oracle SQL Script 中的变量
- forms - 自定义数据原型所见即所得
- gradle - 如何让 gradle run 打印出堆栈跟踪的所有行?
- ruby-on-rails - 使用 capybara 测试将用户放入 table html 并期望 xpath
- javascript - 需要不同版本的包
- c# - 使用具有两个列表的对象的 XDocument 创建 XML
- python - Pandas:groupby value_count 按频率和子类别过滤
- python - 访问在类定义表达式中调用的函数内的类
- python - 手动安装 Python 库
- c# - AspxGridView 使用“显示更多/更少”按钮截断文本