如何检查数组在特定对象属性上是否唯一?

kak*_*kon 5 javascript arrays

我有一个对象数组:

var array1 = [
  {
    property1: 10,
    property2: "abc"
  }, 
  {
    property1: 11,
    property2: "def"
  },
  {
    property1: 10,
    property2: "ghi"
  }
];
Run Code Online (Sandbox Code Playgroud)

现在我想要的是这个数组将被称为不唯一的值property1.

这意味着此数组包含2个元素property1=10,因此该数组不包含唯一值property1.

为了检查这个,我可以使用for循环:

for (var i = 0; i < array1.length; i++) {
  var array2 = array1.slice(); // copy array
  array2.remove(array1[i]);
  var temppropety1 = array1[i].property1;
  for (var j = 0; j < array2.length; j++) {
    if (array2[J].property1==temppropety1) {
      return true;
    }
  }
}
Run Code Online (Sandbox Code Playgroud)

但有没有更简单的方法或图书馆找到这个?

Dra*_*kes 6

这是测试 上唯一性的简单方法property1。循环遍历外部数组中的对象,property1如果每个对象不在临时数组中,则将其添加到临时数组中。如果遇到重复值,则返回false含义property1不唯一。

function isUnique(arr) {
   var tmpArr = [];
   for(var obj in arr) {
     if(tmpArr.indexOf(arr[obj].property1) < 0){ 
       tmpArr.push(arr[obj].property1);
     } else {
       return false; // Duplicate value for property1 found
     }
   }
   return true; // No duplicate values found for property1
}
Run Code Online (Sandbox Code Playgroud)

演示:http : //jsbin.com/lohiqihipe/1/