js中判断数组元素的重复的方法有很多,可以用hash的方法或者排序之后再进行比较,但是我们这里说的case是这样的。假设我有一个数组[{name:'neal',age:'18'},{name:'neal',age:'18'},{name:'jane',age:'20'}].假如数组中元素name和age这两个属性都相同我们则给这个元素加一个属性flag设置为true,否则设置为false.其实就是判断数组中元素中多个属性是否重复的问题了。 这种问题有一个比较死的方法就是拿两个循环来做处理 ```var isUnique = function(collection) { for (var i = 0,len = collection.length;i < len;i++) { var count = 0; for (var j = 0;j < len;j++) { if (collection[i].name === collection[j].name && collection[i].age === collection[j].age) { count = count + 1; } } if (count > 1) { collection[i].flag = true; } else { collection[i].flag = false; } } return collection; };


另外一种方法是使用underscore.js里面的方法了,不过由于underscore一次只能按照一个属性来groupBy,所以也需要多次嵌套

collection = _.groupBy(collection,‘name’); for (var i in collection) { if (collection[i].length > 1) { col = _.groupBy(collection[i],‘age’); for (var j in col) { if (col[j].length > 1) { _.map(col[j], function(ele) { ele.flag = true; }) } }

}
else {
    arr1[i].flag = false;
}

} ``` 这个方法是按照name,age进行groupby,然后遍历,找出对象长度大于一的来进行加属性的操作。