如何从对象数组中删除重复的记录?

时间:2019-01-14 00:18:33

标签: javascript arrays object

我在Javascript中有这个对象。

[{"col1": 1, "col2": 25},{"col1": 1, "col2": 25},{"col1": 3, "col2": 30}]

如何获得重复的记录以获得此结果?

[{"col1": 1, "col2": 25},{"col1": 3, "col2": 30}]

我已经尝试了下一种逻辑,但是不起作用:

[...new Set(myData)]

3 个答案:

答案 0 :(得分:1)

    .innerRadius(function (d) {
        if (d.data.size == 144) {
            return Math.max(0, y(1))
        } else {
            return Math.max(0, y(d.y0))
        }
    })
    .outerRadius(function (d) {
        if (d.data.size == 144) {
            return Math.max(0, y(0.373))
        } else {
            return Math.max(0, y(d.y1))
        }

答案 1 :(得分:1)

我最近在另一个答案上读了这篇文章,我很喜欢它,它使用了filter()的可选参数,该参数在过滤器函数内作为this传递。

const input = [
    {"col1": 1, "col2": 25},
    {"col1": 1, "col2": 25},
    {"col1": 3, "col2": 30}
];

let res = input.filter(function({col1, col2})
{
    return !this.has(`${col1}-${col2}`) && this.add(`${col1}-${col2}`)
}, new Set());

console.log(res);

答案 2 :(得分:1)

This answer显示了带有filter的简单Set操作:

const data = [{"col1": 1, "col2": 25},{"col1": 1, "col2": 25},{"col1": 3, "col2": 30}];

const unique = data.filter(function({ col1, col2 }) { return !this.has(`${col1}-${col2}`) && this.add(`${col1}-${col2}`)}, new Set);

console.log(unique);