2010-02-10 17 views
20

मैं ActionScript में एक सरणी स्पष्ट करने के लिए देख रहा है 3.As3 - कुशलतापूर्वक सरणी को कैसे साफ़ करें?

कुछ विधि सुझाव देते हैं: (? मेमोरी रिसाव) array = [];

अन्य कहेंगे: array.splice(0);

आप किसी भी अन्य है, तो साझा करें । कौन सा अधिक कुशल है?

धन्यवाद।

+0

मेमोरी रिसाव यह आसान एक लाइनर्स के लिए महान जब बाहर की तरह एक सरणी समाशोधन है? कचरा इकठा करना! – n4pgamer

उत्तर

29

array.length = 0 या array.splice() समग्र प्रदर्शन के लिए सबसे अच्छा काम करता प्रतीत होता है। तुम क्यों कि ढंग से सरणी साफ़ करना चाहते

array.splice(0);, array.splice(array.length - 1, 1);

+1

मुझे पता है कि यह एक पुराना विषय है लेकिन शून्य के लिए एक सरणी सेट करने के बारे में कैसे? – drpelz

+5

असल में 'सरणी = शून्य;' इसे साफ करने के बजाय ऐरे से छुटकारा पाता है। इसका मूल रूप से वही होता है जब आप 'array = [];', पिछला सरणी संदर्भ खो जाता है और शायद कचरा इकट्ठा किया जाएगा (जो वांछित परिणाम नहीं हो सकता है)। – Biro456

+1

'array = new Array()' क्यों नहीं? –

2

तुलना में तेजी से मुझे आश्चर्य है कि प्रदर्शन करेंगे? उस सरणी के सभी संदर्भों को साफ़ करने से यह कचरा संग्रह के लिए उपलब्ध कराया जाएगा। array = [] ऐसा करेगा, अगर arrayarray का एकमात्र संदर्भ है। यदि ऐसा नहीं है तो आपको शायद इसे emtpying नहीं करना चाहिए (?)

भी, कृपया ध्यान दें कि 'अराजकता स्ट्रिंग को कुंजी के रूप में स्वीकार करती है। दोनों splice और लंबाई पूरी तरह से पूर्णांक कुंजी पर काम करते हैं, तो वे स्ट्रिंग कुंजी पर कोई प्रभाव नहीं पड़ेगा।

btw .: array.splice(array.length - 1, 1);array.pop();

+0

मैं इसे कचरा संग्रह के लिए उपलब्ध बनाना चाहता हूं, मैं इसे खाली करना चाहता हूं। – ALOToverflow

+0

एएस 3 में बेहद निश्चित सरणी तारों के रूप में स्ट्रिंग स्वीकार नहीं करती हैं। ऑब्जेक्ट्स करते हैं, लेकिन Arrays नहीं। –

+0

@ ओमोनोलेट्स: आप गलत हैं। अगली बार, अपने बयान की पुष्टि करने का प्रयास करें। – back2dos

1
array.splice(0,array.length); 

के बराबर है यह हमेशा मेरे लिए बहुत अच्छी तरह से काम किया है, लेकिन मैं

2

वहाँ एक कुंजी है अभी तक प्रोफाइलर के माध्यम से इसे चलाने के लिए एक मौका नहीं मिला है array.pop() और array.splice (array.length - 1, 1) के बीच अंतर जो कि पॉप तत्व के मान को वापस कर देगा।

while(myArray.length > 0){ 
    view.removeChild(myArray.pop()); 
} 
6

100 तत्वों के साथ सरणी के लिए (ms में मानक कम से कम समय की जरूरत है,):

// best performance (benchmark: 1157) 
array.length = 0; 
// lower performance (benchmark: 1554) 
array = []; 
// even lower performance (benchmark: 3592) 
array.splice(0); 
संबंधित मुद्दे