I have to delete some elements of my array, but without rearrange array.
If I use "delete" to delete my elements, the "holes" take up memory?
var array=["A","B","C"];
delete array[1]; // array -> ["A", undefined, "C"]
I think the deleted element is really deleted so it isn't take up memory space, isn't true?
Try using,
array.splice(index, 1);
See Mastering JavaScript Arrays.
Entirely implementation dependent. Internally all JS representations will eventually convert to a sparse representation, but the sparese representation tends to use more memory per element and be slower to access than the non-sparse array.
For this reason removing onevalue from a dense array is unlikely to releas any memory, but after a sufficient set of elements are removed the implementation will likely convert to a sparse representation to save memory overall.
Note: the object or value at the index you delete won't be deleted immediately -- delete simply removes the property slot from the object -- the object/value will only be removed during a GC pass, and only if there are no other references.
You can use array.splice(1, 1);
It will remove one entry at index 1. The first parameter is the index, the second one is the count.
If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!
Donate Us With