var str = "D=13123&D=13123&A=1111&D=13123&D=13123&B=2222&D=1 3123&C=3333&D=13123&D=13123",
     strArray = str.split("&"),
     toRemove = ["D=", "B=", "C="];
for(var i = 0; i < strArray.length; i++) {
  for(var n = 0, lengN = toRemove.length; n < lengN; n++) {
      if(~strArray[i].indexOf(toRemove[n])) {
           strArray.splice(i, 1);
           i--;
      }
  }
}
В первый же проверки удаляется первый элемент массива, после чего происходит проверка  следующего элемента из массива toRemove, где strArray[-1] === undefined -> TypeError.