如何返回对象数组的非重复值

How to return non-duplicate values of array of object

本文关键字:数组 对象 何返回 返回      更新时间:2023-09-26
var newarray= 
[ { value: 'Large', name: 'Size' },
{ value: 'Red', name: 'Color' },
{ value: 'Cotton', name: 'Material' },
{ value: 'Affinity', name: 'Collection' },
{ value: 'Pine Montage', name: 'Style' },
{ value: 'Large', name: 'Size' },
{ value: 'Red', name: 'Color' },
{ value: 'Jute', name: 'Material' },
{ value: 'Affinity', name: 'Collection' },
{ value: 'Pine Montage', name: 'Style' },
{ value: 'Large', name: 'Size' },
{ value: 'Green', name: 'Color' },
{ value: 'Jute', name: 'Material' },
{ value: 'Affinity', name: 'Collection' },
{ value: 'Pine Montage', name: 'Style' } ];

这是我的数组我需要在数组中找到具有非重复值的唯一对象数组,请帮助

我建议遍历数组并通过查找来过滤项目,如果项目存储在哈希图中。

var array = [{ value: 'Large', name: 'Size' }, { value: 'Red', name: 'Color' }, { value: 'Cotton', name: 'Material' }, { value: 'Affinity', name: 'Collection' }, { value: 'Pine Montage', name: 'Style' }, { value: 'Large', name: 'Size' }, { value: 'Red', name: 'Color' }, { value: 'Jute', name: 'Material' }, { value: 'Affinity', name: 'Collection' }, { value: 'Pine Montage', name: 'Style' }, { value: 'Large', name: 'Size' }, { value: 'Green', name: 'Color' }, { value: 'Jute', name: 'Material' }, { value: 'Affinity', name: 'Collection' }, { value: 'Pine Montage', name: 'Style' }],
    unique = function (a) {
        var o = {};
        return a.filter(function (b) {
            var k = b.name + '|' + b.value;
            if (!(k in o)) {
                o[k] = true;
                return true;
            }
        });
    }(array);
document.write('<pre>' + JSON.stringify(unique, 0, 4) + '</pre>');

您可以使用 Set 获取唯一值

var uniq = Array.from(new Set(newarray.map(function(a) {
    return JSON.stringify(a);
}))).map(function(a) {
    return JSON.parse(a)
});
console.log(uniq); // will print your unique values