Array.size () बनाम Array.length


385

दोनों के बीच क्या अंतर है?

इसलिए मुझे पता है कि array.size()यह एक समारोह है जबकि array.lengthएक संपत्ति है। क्या एक दूसरे के ऊपर एक उपयोग करने के लिए उपयोग है? क्या एक और कुशल है? (मुझे .lengthलगता है कि यह एक संपत्ति के बजाय एक संपत्ति कॉल है, तो काफी तेजी से होने की कल्पना करेगा ?) कोई भी धीमे विकल्प का उपयोग क्यों करेगा? क्या कुछ ब्राउज़र हैं जो एक या दूसरे के साथ असंगत हैं?

  var x = [];
  console.log(x.size());
  console.log(x.length);
  console.log(x.size()==x.length);
  x =[1,2,3];
  console.log(x.size());
  console.log(x.length);
  console.log(x.size()==x.length);

प्रिंट होगा:

  0, 0, true
  3, 3, true

63
Array.size()देशी जावास्क्रिप्ट में आपने कहां विधि पाई है?
VisioN

2
Chrome में नहीं है .size...
0x499602D2

1
@AbrahamP idk क्या क्रोम कंसोल आप उपयोग कर रहे हैं ...
Naftali उर्फ ​​नील


3
.size()प्रोटोटाइप ढांचे से संभावना है: prototypejs.org/doc/latest/language/Array/prototype/size
माइक

जवाबों:


535

Array.size () मान्य विधि नहीं है

हमेशा लंबाई वाली संपत्ति का उपयोग करें

सरणी प्रोटोटाइप में आकार विधि को जोड़ने वाली एक लाइब्रेरी या स्क्रिप्ट है क्योंकि यह एक मूल सरणी विधि नहीं है। यह आमतौर पर एक कस्टम गेटर के लिए समर्थन जोड़ने के लिए किया जाता है। इसका उपयोग करने का एक उदाहरण तब होगा जब आप किसी सरणी की स्मृति में आकार प्राप्त करना चाहते हैं (जो कि केवल एक चीज है जो मैं सोच सकता हूं कि इस नाम के लिए उपयोगी होगा)।

अंडरस्कोर.जेएस दुर्भाग्य से एक sizeविधि को परिभाषित करता है जो वास्तव में किसी वस्तु या सरणी की लंबाई लौटाता है। चूंकि दुर्भाग्य से किसी फ़ंक्शन की लंबाई संपत्ति को परिभाषित तर्कों की संख्या के रूप में परिभाषित किया जाता है, जो फ़ंक्शन द्वारा घोषित किए गए विकल्प का उपयोग करना होता है और आकार को चुना गया था (गणना एक बेहतर विकल्प होगा)।


154

.size()है के मूल निवासी जेएस समारोह Array(कम से कम किसी भी ब्राउज़र है कि मैं के बारे में पता नहीं)।

.length उपयोग किया जाना चाहिए।


अगर

.size() आपके पेज पर काम करता है , सुनिश्चित करें कि आपके पास प्रोटोटाइप जैसी कोई अतिरिक्त लाइब्रेरी शामिल नहीं है, जो प्रोटोटाइप के साथ मिल रही हैArray

या

आपके ब्राउज़र पर कुछ प्लगइन हो सकते हैं जो Arrayप्रोटोटाइप के साथ मूक हो रहे हैं ।


@BartFriederichs अच्छी तरह से मैं Chrome में हूं, लेकिन यह जानना अच्छा है :-D
Naftali उर्फ ​​नील

यह क्रोम में काम करता है, फ़ायरफ़ॉक्स में काम नहीं करता है, मैं डीबगिंग जरूरतों के लिए क्रोम का उपयोग करता हूं इसलिए यह काम करने के लिए दिखाई दिया। इसके गैर अस्तित्व को इंगित करने के लिए धन्यवाद।
अब्राहम पी

9
यदि यह आपके लिए Chrome में काम करता है, तो संभवत: कुछ अतिरिक्त पुस्तकालय हैं जो आप अपने पृष्ठ पर कॉल कर रहे हैं जो इसे ऐरे प्रोटोटाइप में जोड़ता है।
स्पिक विलियम्स

1
.Length भर में अपने सिर्फ एक आवरण तो वास्तव में ... मैं थोड़े अब बेवकूफ लग रहा है ..., संस्करण 23.0.1271.97 [] .size समारोह आकार () {this.length लौट}
अब्राहम पी

2
@AbrahamP, इस पृष्ठ पर F12 मारा, और [].sizeकंसोल में टाइप करें। यदि यह काम करता है, तो आपके पास कुछ प्रकार के क्रोम प्लगिन हैं जो ऐरे प्रोटोटाइप के साथ काम कर रहे हैं, और मुझे चिंता होगी। :)
एक्विनास

30

.size()समारोह jQuery के और कई अन्य पुस्तकालयों में उपलब्ध है।

.lengthसंपत्ति से काम करता है केवल जब सूचकांक एक पूर्णांक है।

lengthसंपत्ति जाएगा सरणी के इस प्रकार के साथ काम:

var nums = new Array();
nums[0] = 1; 
nums[1] = 2;
print(nums.length); // displays 2

lengthसंपत्ति नहीं होंगे सरणी के इस प्रकार के साथ काम:

var pbook = new Array(); 
pbook["David"] = 1; 
pbook["Jennifer"] = 2;
print(pbook.length); // displays 0

तो आपके मामले में आपको .lengthसंपत्ति का उपयोग करना चाहिए ।


क्या कुछ ऐसा है जो अगर स्ट्रिंग्स के साथ काम करता है तो आकार काम नहीं करता है?
क्रिस

2
@ स्ट्रिंग कीज़ के साथ सरणियों के लिए, जैसे pbookऊपर, आप उपयोग कर सकते हैं $(pbook).size();[jQuery की आवश्यकता है]
बुरा पेस्टी

3
आप हर जगह दो स्थान क्यों रखेंगे, हालांकि?
पोस्ट सेल्फ

19

.size() jQuery का है, शायद आप या तो किसी के साथ भ्रमित हो रहे हैं या किसी और से लिया है जिसने jQuery पुस्तकालय को अपनी परियोजना में आयात किया था।

यदि आपने jQuery आयात किया है और आप जैसा लिखना चाहते हैं $(array).size(), वह सरणी लंबाई लौटाएगा।


1
कई पुस्तकालयों का उपयोग .size()यह न केवल jquery है
Naftali उर्फ ​​नील

15

array.length जरूरी नहीं कि सरणी में वस्तुओं की संख्या:

var a = ['car1', 'car2', 'car3'];
a[100] = 'car100';
a.length; // 101

सरणी की लंबाई उच्चतम सूचकांक से एक अधिक है।

जैसा कि पहले कहा गया Array.size()है कि एक वैध तरीका नहीं है।

अधिक जानकारी


व्यवहार में यह वस्तुओं की संख्या है। अधिकांश JS दुभाषिया सरणी पंक्तियों को अपरिभाषित के साथ भर देंगे। आपके उदाहरण में, आपके पास सरणी में 101 तत्व होंगे जिसमें 97 तत्व बिना मान (अपरिभाषित) के हैं, लेकिन तत्व हैं। यह ऐसा दिखेगा: ['car1', 'car2', 'car3', अपरिभाषित * 97, 'car100'] यदि आप इस सरणी पर लूप करते हैं, तो लूप के बाद आपका वेतन वृद्धि 101 मान देगा।
एलजैकिस्ट

दूसरी ओर, array.length जरूरी सरणी में परिभाषित (असाइन नहीं किया गया) मान की संख्या है ।
एलजैकिस्ट

4

संख्यात्मक कुंजियों के साथ सरणियों के लिए संपत्ति की 'लंबाई' (last_key + 1) लौटाती है:

var  nums  =  new  Array ();
nums [ 10 ]  =  10 ; 
nums [ 11 ]  =  11 ;
log.info( nums.length );

12 प्रिंट होगा!

यह काम करेगा:

var  nums  =  new  Array ();
nums [ 10 ]  =  10 ; 
nums [ 11 ]  =  11 ;
nums [ 12 ]  =  12 ;
log.info( nums.length + '  /  '+ Object.keys(nums).length );

जब तक यह एक दिलचस्प जवाब है, मुझे पूरी तरह से यकीन नहीं है कि यह इस सवाल का जवाब है
ओलीवररेडिनी

ओपी 'Array.size () बनाम Array.length' पूछ रहा था। पिछली चर्चाओं से, यह स्पष्ट था कि 'आकार' फ़ंक्शन मानक जावास्क्रिप्ट का हिस्सा नहीं है, लेकिन पुस्तकालयों द्वारा कार्यान्वित किया जाता है। इसलिए मैं मान रहा हूं कि ओपी को इस बात में दिलचस्पी है कि जावास्क्रिप्ट सरणियों की वास्तविक लंबाई कैसे प्राप्त की जाए। मैं जावास्क्रिप्ट के एक छोटे से ज्ञात 'फ़ीचर' को उजागर कर रहा हूं, जिससे अप्रत्याशित व्यवहार हो सकता है, खासकर जब व्यवहार भिन्न होता है, उदाहरण के लिए अन्य प्रकार की वस्तुएं, जैसे तार, जैसे।
cskwg


2

आकार डुप्लिकेट का पता लगाता है, यह अद्वितीय मानों की संख्या लौटाएगा

const set1 = new Set([1, 2, 3, 4, 5, 5, 5, 6]);
console.log(set1.size);
// expected output: 6

1

वास्तव में, .size()शुद्ध जावास्क्रिप्ट विधि नहीं है, सेट ऑब्जेक्ट .sizeकी एक गौण संपत्ति है जो थोड़ी सी दिखती है, लेकिन यह एक फ़ंक्शन विधि नहीं है, जैसा कि मैंने कहा था, यह एक यूनिक नंबर दिखाने के लिए सेट ऑब्जेक्ट का एक्सेसर गुण है (अद्वितीय) तत्व एक सेट ऑब्जेक्ट में।.size()

आकार एक्सेसर गुण सेट ऑब्जेक्ट में (अद्वितीय) तत्वों की संख्या लौटाता है।

const set1 = new Set();
const object1 = new Object();

set1.add(42);
set1.add('forty two');
set1.add('forty two');
set1.add(object1);

console.log(set1.size);
// expected output: 3

और lengthएक चलने योग्य वस्तु (सरणी) की एक संपत्ति है जो उस सरणी में तत्वों की संख्या लौटाती है। मान एक अहस्ताक्षरित, 32-बिट पूर्णांक है जो हमेशा सरणी में उच्चतम सूचकांक की तुलना में संख्यात्मक रूप से अधिक होता है।

const clothing = ['shoes', 'shirts', 'socks', 'sweaters'];

console.log(clothing.length);
// expected output: 4

0

हम किसी सरणी में तत्वों की संख्या सेट या वापस करने के लिए .length संपत्ति का उपयोग कर सकते हैं । रिटर्न वैल्यू एक संख्या है

> set the length: let count = myArray.length;
> return lengthof an array : myArray.length

हम डुप्लिकेट मानों को फ़िल्टर करने और सेट में तत्वों की गिनती प्राप्त करने की आवश्यकता के मामले में आप कर सकते हैं।

const set = new set([1,1,2,1]); 
 console.log(set.size) ;`
हमारी साइट का प्रयोग करके, आप स्वीकार करते हैं कि आपने हमारी Cookie Policy और निजता नीति को पढ़ और समझा लिया है।
Licensed under cc by-sa 3.0 with attribution required.