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.