js中判断数组元素的重复的方法有很多,可以用hash的方法或者排序之后再进行比较,但是我们这里说的case是这样的。假设我有一个数组[{name:'neal',age:'18'},{name:'neal',age:'18'},{name:'jane',age:'20'}].假如数组中元素name和age这两个属性都相同我们则给这个元素加一个属性flag设置为true,否则设置为false.其实就是判断数组中元素中多个属性是否重复的问题了。 这种问题有一个比较死的方法就是拿两个循环来做处理

	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,然后遍历,找出对象长度大于一的来进行加属性的操作。