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)
...