function merge(anArray){
    var i, len = anArray.length, hash = {}, result = [], obj;
    // build a hash/object with key equal to code
    for(i = 0; i < len; i++) {
        obj = anArray[i];
        if (hash[obj.code]) {
            // if key already exists than push a new value to an array
            // you can add extra check for duplicates here
            hash[obj.code].a.push(obj.a);
        } else {
            // otherwise create a new object under the key
            hash[obj.code] = {code: obj.code, a: [obj.a]}
        }
    }
    // convert a hash to an array
    for (i in hash) {
        result.push(hash[i]);
    }
    return result;
}
--
// UNIT TEST
var input= [
  {
    code:"Abc",
    a:10
  },
  {
    code:"Abc",
    a:11
  },
  {
    code:"Abcd",
    a:11
  }
];
var expected = [
  {code:"Abc",a:[10,11]},
  {code:"Abcd",a:[11]},
];
console.log("Expected to get true: ",  JSON.stringify(expected) == JSON.stringify(merge(input)));