Vấn đềCó sử dụng xóa và sau đó .push() trên hiệu suất mảng/tiêu thụ bộ nhớ không?
Sử dụng delete
trên một phần tử mảng để xoá bỏ nó từ mảng là cách duy nhất tôi biết để loại bỏ một phần tử từ một mảng như vậy mà một cuộc gọi .forEach()
bỏ qua chỉ số.
Câu hỏi
- Có sử dụng
delete
trên một chỉ số,exampleArray[i]
ví dụ, gây ra tiếp theoexampleArray.push()
để tăng mức tiêu thụ bộ nhớ của đối tượng mảng? Làm cách nào để xóa hiệu ứng đối tượng bộ thu gom rác?
Có cách nào hiệu quả hơn để thoát một yếu tố
exampleArray
của một yếu tố không?
Ví dụ về các cựu
var exampleArray = [];
var n = 500;
//Does this line imply a memory allocation?
exampleArray.length = n;
exampleArray.fill("Lorem Ipsum", 0);
exampleArray.forEach(function(cur, ind, arr) {
if(ind % 4 === 0) {
delete arr[ind]; //Actually deletes the object itself, index no longer exists
//Length does not change, however. Does available memory?
}
}, this);
n /= 4;
//Where, in memory, are these placed?
while(n--) exampleArray.push("amet dolor");
Any help is appreciated, cảm ơn bạn.
Giả định của bạn đều sai nhiều. 'delete' không phải là cách duy nhất để loại bỏ một chỉ mục khỏi một mảng, trên thực tế, nó không làm điều đó chút nào, và thậm chí không dành cho các mảng? Làm thế nào nó ảnh hưởng đến các nhà sưu tập rác, và bất cứ điều gì khác, thực sự trở nên không thích hợp sau đó? – adeneo
Tôi đã không đưa ra bất kỳ giả định nào, mặc dù nó có vẻ như bạn có. Tôi nói đó là cách duy nhất tôi nhận thức được, quan tâm để khai sáng cho tôi? –
@AndrueAnderson nếu bạn đang tìm kiếm câu trả lời ngắn và ngọt cho câu hỏi của bạn, chúng là 1) không 2) nó không 3) [] .splice – Andbdrew