Вы не можете изменить размер в ArrayBuffer
, и поэтому вы не можете просто удалить элемент и сделать его исчезнуть. ArrayBuffer.prototype.slice
предоставит вам копию буфера, который может быть того же размера или меньше, поэтому сам по себе это тоже не поможет.
Вы можете перенести все записи после позиции N (в вашем случае 24) влево, перезаписывая N с N + 1, N + 1 с N + 2 и т. Д. И в конце обрезая последнее значение.
function deleteWithShift(arrayBuffer, position) {
var typedArray = new Uint8Array(arrayBuffer),
i;
for (i = position+1; i < typedArray.length; i+=1) {
ui8Array[i-1] = ui8Array[i];
}
return ui8Array.buffer.slice(0, ui8Array.length-1);
}
Можно также нарезать буфер дважды, до и после позиции, а затем объединить два массива.
function deleteWithSliceAndMerge(arrayBuffer, position) {
var frontValues = new Uint8Array(arrayBuffer, 0, position),
backValues = new Uint8Array(arrayBuffer, position+1),
mergedArray = new Uint8Array(frontValues.length + backValues.length);
mergedArray.set(frontValues);
mergedArray.set(backValues, position);
return mergedArray.buffer;
}
С этим он будет помещать 00 вместо 21, мне нужно удалить это положение. – felipesmendes