次のようなものはどうですか:
var bucket = {};
for(var i=0;i<array.length;i++) {
var item = array[i];
var hash = JSON.stringify(item); //or some a hashing algorithm...
var prev = bucket[hash];
if(prev) {
prev.duplicate = item.duplicate = true;
} else {
bucket[hash] = item
}
}
または依存せずに同じJSON.stringify
:
var markDuplicates = function(array, hashFunc) {
var bucket = {};
for(var i=0;i<array.length;i++) {
var item = array[i];
var hash = hashFunc(item);
var prev = bucket[hash];
if(prev) {
prev.duplicate = item.duplicate = true;
} else {
bucket[hash] = item
}
}
return array;
};
markDuplicates(yourArray, function(item) { return item.city + item.state; });