2

私はこのような配列を持っています:

var myObjArray = [{city: 'milwaukee', state: 'wi'}, 
                  {city:'madison', state: 'wi'}, 
                  {city:'greenbay', state: 'wi'}, 
                  {city:'madison', state: 'wi'}];

配列をそれ自体と比較して重複を見つけるにはどうすればよいですか。
(注:重複を保持する必要があるため、オブジェクトにプロパティをフラグとして追加できます)。

4

1 に答える 1

2

次のようなものはどうですか:

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; });
于 2013-01-30T18:41:51.463 に答える