ICD Lookups - best method

by Nivaldo

JavaScript

var equiv = [
    {"nameAbc":"abc-1","nameXyz":"xyz-2"},
    {"nameAbc":"abc-5","nameXyz":"xyz-3"}
];

/* OLD SCHOOL */
function checkAbc (val) {
    var flag = false;
    for (var i=0; i<equiv.length; i++)
        if (equiv[i].nameAbc == val) {
            flag = true;
            console.log(equiv[i].nameAbc + "--" + equiv[i].nameXyz);
        };
    if (!flag)
        console.log(val);
};

function checkXyz(val) {
    var flag = false;
    for (var i=0; i<equiv.length; i++)
        if (equiv[i].nameXyz == val) {
            flag = true;
            console.log(equiv[i].nameAbc + "--" + equiv[i].nameXyz);
        }
    if (!flag)
        console.log(val);
};
/* */

/*
Note that jQuery.grep is not really suited for looking up unique IDs as it doesn't stop searching the array at the first element it finds. For large arrays, this is not efficient.
http://stackoverflow.com/questions/7364150/find-object-by-id-in-array-of-javascript-objects
*/
function checkVal(val,equiv) {
    var result = $.grep(equiv, function(e){ return e.nameAbc === val || e.nameXyz === val; });
    if (result.length != 0)
        console.log(result[0].nameAbc + "--" + result[0].nameXyz);
    else
        console.log(val);
};

checkAbc("abc-1");
checkAbc("abc-4");
checkXyz("xyz-2");
checkXyz("xyz-6");

checkVal("abc-1",equiv);
checkVal("xyz-2",equiv);
checkVal("abc-4",equiv);
/* */

/* 
EFFICIENT LOOKUPS
http://stackoverflow.com/questions/7364150/find-object-by-id-in-array-of-javascript-objects
*/
var lookupAbc = {};
for (var i = 0, len = equiv.length; i < len; i++) {
    lookupAbc[equiv[i].nameAbc] = equiv[i];
}

var lookupXyz = {};
for (var i = 0, len = equiv.length; i < len; i++) {
    lookupXyz[equiv[i].nameXyz] = equiv[i];
}

var result = lookupAbc["abc-1"];
console.log(result.nameAbc + "--" + result.nameXyz);

var result = lookupXyz["xyz-2"];
console.log(result.nameAbc + "--" + result.nameXyz);

var val = "xyz-1";
var result = lookupXyz[val];
if (result != null) 
   ...