繁体   English   中英

检查数组中的对象属性是否唯一

[英]Check if object attribute in an array is unique

我有这个数组:

[{category:'Cat A'}, {category:'Cat B'},{category:'Cat A }]

我想要一个如果数组中的两个或多个键(类别)相同则返回true的函数。

下划线有什么聪明的方法吗? 在文档中找不到任何内容。 还是我需要通过循环手动执行此操作?

您可以尝试uniq函数:

var arrayUniq = _.uniq(myArray, function(item) { return item.category; });
var isUniq = arrayUniq.length === myArray.length

作为一个新的JS程序员,我想仅使用JS解决此问题。 这是我的尝试,请建议我是否在这里遗漏了一些东西

给定对象数组(或存储)

var storeWithDup = [{category: "Cat A"}, {category: "Cat B"}, {category: "Cat A"}]; var storeWithoutDup = [{category: "Cat A"}, {category: "Cat B"}, {category: "Cat C"}];

1.使用自定义比较功能对对象数组进行排序

var myComparator = function(value1, value2){
    if(value1.hasOwnProperty("category") &&
        value2.hasOwnProperty("category")){

        if(value1.category < value2.category){
            return -1;
        } else if(value1.category > value2.category){
            return 1;
        } else {
            return 0;
        }
    }
};

2.检查数组中是否有重复的相邻元素

var arrayDuplicateChecker = function(inpArray){
    for(var i = 1; i < inpArray.length; i++){
        if(inpArray[i-1].category == inpArray[i].category){
            return true;
        }
    }
    return false;
};

3.帮助程序功能以检查商店中的重复类别

var checkForDuplicateCat = function(inpStore){
    // 1. Sort array
    inpStore.sort(myComparator);
    // 2. check for adjacent duplicates
    return arrayDuplicateChecker(inpStore);
};

结果

alert(checkForDuplicateCat(storeWithDup));  // True
alert(checkForDuplicateCat(storeWithoutDup));  // False

链接到 JS Fiddle:对象数组排序和比较器

我的,我们制作东西有多复杂。

var array = [{category: 'Cat A'}, {category: 'Cat B'}, {category: 'Cat A }],
    groups = _.groupBy(array, 'category');
    duplicated = Object.keys(groups).filter(function(cat) {
        return groups[cat].length>1; 
    });

的console.log(重复);

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM