Remove duplicates from JSON string

by Mark Beharrell

HTML

With Duplicates:<br/>
<textarea class="dirty">[{"abbrev": "^1.1.1",
    "accepts": "^1.3.5",
    "acorn": "^6.0.5",
    "acorn-dynamic-import": "^4.0.0",
    "acorn-jsx": "^5.0.1",
    "acorn-node": "^1.6.2",
    "acorn-to-esprima": "^2.0.8",
    "acorn-walk": "^6.1.1",
    "ajv": "^6.6.2",
    "align-text": "^1.0.2",
    "alter": "^0.2.0",
    "amdefine": "^1.0.1",
    "ansi": "^0.3.1",
    "ansi-align": "^3.0.0",
    "ansi-escapes": "^3.1.0",
    "ansi-regex": "^4.0.0",
    "ansi-styles": "^3.2.1",
    "ansicolors": "^0.3.2",
    "ansistyles": "^0.1.3",
    "anymatch": "^2.0.0",
    "aproba": "^2.0.0",
    "archy": "^1.0.0",
    "are-we-there-yet": "^1.1.5",
    "argparse": "^1.0.10",
    "arr-diff": "^4.0.0",
    "arr-flatten": "^1.1.0",
    "arr-union": "^3.1.0",
    "array-each": "^1.0.1",
    "array-filter": "^1.0.0",
    "array-find-index": "^1.0.2",
    "array-flatten": "^2.1.2",
    "array-includes": "^3.0.3",
    "array-index": "^1.0.0",
    "array-map": "^0.0.0",
    "array-reduce": "^0.0.0",
    "array-slice": "^1.1.0",
    "array-union": "^1.0.2",
    "array-uniq": "^2.0.0",
    "array-unique": "^0.3.2",
    "arrify": "^1.0.1",
    "asap": "^2.0.6",
    "asn1": "^0.2.4",
    "assert-plus": "^1.0.0",
    "assign-symbols": "^2.0.2",
    "ast-traverse": "^0.1.1",
    "ast-types": "^0.11.7",
    "astral-regex": "^1.0.0",
    "async": "^2.6.1",
    "async-each": "^1.0.1",
    "async-some": "^1.0.2",
    "asynckit": "^0.4.0",
    "atob": "^2.1.2",
    "auto-prefixer": "^0.4.2",
    "autoprefixer": "^9.4.4",
    "aws-sign2": "^0.7.0",
    "aws4": "^1.8.0",
    "azure-common": "^0.9.20",
    "azure-mobile-apps": "^4.0.1",
    "azure-odata-sql": "^0.2.0",
    "azure-query-js": "^0.1.0",
    "azure-sb": "^0.10.6",
    "b64": "^4.1.2",
    "babel-code-frame": "^6.26.0",
    "babel-core": "^6.26.3",
    "babel-eslint": "^10.0.1",
    "babel-generator": "^6.26.1",
    "babel-helpers": "^6.24.1",
    "babel-messages": "^6.23.0",
   ...

CSS

textarea {
    width:400px;
    height:200px;
}

JavaScript

jQuery(".process").click( function() {
   var dirty = JSON.parse( jQuery(".dirty").val().trim() );
   var cleaned = removeDuplicates(dirty);
    console.log(cleaned);
   jQuery(".clean").val( JSON.stringify(cleaned) );
});

/* 
 * Function from http://stackoverflow.com/questions/21951115/remove-duplicate-values-from-json-data. Answered by Tushar Gupta
 */
function removeDuplicates(json_all) {
    var arr = [],
        collection = [];
    
    $.each(json_all, function (index, value) {
        if ($.inArray(value.id, arr) == -1) {
            arr.push(value.id);
            collection.push(value);
        }
    });
    return collection;
}