猿问

使用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)


一只斗牛犬
浏览 145回答 2
2回答

慕尼黑8549860

您可以使用reduce()映射到对象并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)
随时随地看视频慕课网APP

相关分类

JavaScript
我要回答