অ্যারে.সাইজ () বনাম অ্যারে। দৈর্ঘ্য


384

এই দুটির মধ্যে পার্থক্য কী?

সুতরাং আমি জানি যে 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()নেটিভ জাভাস্ক্রিপ্টে আপনি কোথায় পদ্ধতি খুঁজে পেয়েছেন ?
ভিজিওন

2
ক্রোমের নেই .size...
0x499602D2

1
@ আব্রাহামপি আইডিকে আপনি ক্রোম কনসোলটি কী ব্যবহার করছেন ...
নাফতালি ওরফে নীল


3
.size()প্রোটোটাইপ ফ্রেমওয়ার্ক থেকে সম্ভবত: প্রোটোটাইপস.আর.আর.গো.
ডক

উত্তর:


534

অ্যারে.সাইজ () কোনও বৈধ পদ্ধতি নয়

সর্বদা দৈর্ঘ্যের সম্পত্তি ব্যবহার করুন

অ্যারে প্রোটোটাইপে আকার পদ্ধতি যুক্ত করে একটি লাইব্রেরি বা স্ক্রিপ্ট রয়েছে কারণ এটি কোনও স্থানীয় অ্যারে পদ্ধতি নয়। এটি সাধারণত কাস্টম গেটারের সমর্থন যোগ করার জন্য করা হয়। এটি ব্যবহারের উদাহরণ হ'ল আপনি যখন কোনও অ্যারের স্মৃতিতে আকার পেতে চান (যা কেবলমাত্র এই জিনিসটির জন্য এই নামের জন্য কার্যকর হবে) think

অ্যান্ডস্কোর.জেএসস দুর্ভাগ্যক্রমে এমন একটি sizeপদ্ধতি সংজ্ঞায়িত করে যা আসলে কোনও অবজেক্ট বা অ্যারের দৈর্ঘ্য দেয়। যেহেতু দুর্ভাগ্যক্রমে কোনও ফাংশনের দৈর্ঘ্যের সম্পত্তিটি নামযুক্ত আর্গুমেন্টগুলির সংখ্যার হিসাবে সংজ্ঞায়িত করা হয় যা ফাংশন ঘোষণা করে যে তাদের বিকল্প ব্যবহার করতে হবে এবং আকারটি বেছে নেওয়া হয়েছিল (গণনাটি আরও ভাল পছন্দ হত)।


153

.size()হয় না একটি নেটিভ জাতীয় ফাংশন Array(অন্তত কোনো ব্রাউজার যা আমি জানি নেই)।

.length ব্যবহার করা উচিত


যদি

.size() না আপনার পৃষ্ঠায় কাজ, নিশ্চিত করুন যে আপনি মত অন্তর্ভুক্ত কোনো অতিরিক্ত লাইব্রেরি নেই করা প্রোটোটাইপ যে সঙ্গে mucking হয়Arrayপ্রোটোটাইপ।

অথবা

আপনার ব্রাউজারে এমন কিছু প্লাগইন থাকতে পারে যা Arrayপ্রোটোটাইপটি নিয়ে মাক করছে ।


@ বার্টফ্রিডরিচ ঠিক আছে যে আমি ক্রোমে আছি, তবে এটি জেনে রাখা ভাল :
নাফতালি ওরফে নীল

এটি ক্রোমে কাজ করে, ফায়ারফক্সে কাজ করে না, আমি ডিবাগিংয়ের প্রয়োজনে ক্রোম ব্যবহার করার ঝোঁক লাগে যাতে এটি কাজ করার জন্য উপস্থিত হয়। এর অস্তিত্বের ইঙ্গিত করার জন্য ধন্যবাদ
আব্রাহাম পি

9
যদি এটি আপনার জন্য ক্রোমে কাজ করে তবে সম্ভবত আপনার পৃষ্ঠায় কল করে এমন কিছু অতিরিক্ত পাঠাগার রয়েছে যা এটি অ্যারে প্রোটোটাইপে যুক্ত করে।
স্পাইক উইলিয়ামস

1
সংস্করণ 23.0.1271.97 []। আকার ফাংশন আকার () {এটি ফিরিয়ে দিন;} সুতরাং আসলে এটির দৈর্ঘ্যের কেবল একটি মোড়ক ... আমি এখন বোকা বোধ করছি ...
আব্রাহাম পি

2
@ আব্রাহামপি, এই পৃষ্ঠায় 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()এটি কেবল জ্যাকুরি নয়
নফতালি ওরফে নীল

15

array.length অ্যারে আইটেমের সংখ্যা অগত্যা নয়:

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

অ্যারের দৈর্ঘ্য সর্বোচ্চ সূচকের চেয়ে আরও বেশি one

আগে Array.size()যেমন বলা হয়েছে তা বৈধ পদ্ধতি নয়।

অধিক তথ্য


অনুশীলনে এটি আইটেমের সংখ্যা। বেশিরভাগ জেএস দোভাষী অনুবাদকের সাথে অ্যারে সারিগুলি পূরণ করবেন। আপনার উদাহরণে, আপনার অ্যারেতে 101 টি উপাদান থাকবে মূল্য ছাড়াই 97 টি উপাদান (অপরিজ্ঞাত) তবে উপাদানগুলি রয়েছে। এটির মতো দেখতে পাবেন: ['car1', 'car2', 'car3', অপরিশোধিত * 97, 'car100'] আপনি যদি এই অ্যারেটিতে লুপ করেন তবে আপনার ইনক্রিমেন্ট ভেরিয়েবলটি লুপের পরে 101 এর মান দিবে।
এলজ্যাকস্টে

অন্যদিকে, অ্যারেরে দৈর্ঘ্য অ্যারিতে সংজ্ঞায়িত (নির্ধারিত নয়) মানের সংখ্যা নয়।
এলজ্যাকিস্টে

4

বৈশিষ্ট্য 'দৈর্ঘ্য' সংখ্যাসূচক কী সহ অ্যারেগুলির জন্য (শেষ_কি + 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 );

যদিও এটি একটি আকর্ষণীয় উত্তর, আমি পুরোপুরি নিশ্চিত নই যে এটি এই প্রশ্নের উত্তর
অলিভারাদিনি

ওপিতে 'অ্যারে.সাইজ () বনাম অ্যারে.লেন্থ' জিজ্ঞাসা করছিল। পূর্ববর্তী আলোচনা থেকে, এটি পরিষ্কার হয়ে গেছে যে, 'আকার' ফাংশনটি স্ট্যান্ডার্ড জাভাস্ক্রিপ্টের অংশ নয় তবে লাইব্রেরি দ্বারা প্রয়োগ করা হয়েছে। সুতরাং আমি ধরে নিচ্ছি যে ওপি জাভাস্ক্রিপ্ট অ্যারেগুলির আসল দৈর্ঘ্যটি কীভাবে পুনরুদ্ধার করতে আগ্রহী। আমি জাভাস্ক্রিপ্টের একটি সামান্য পরিচিত 'বৈশিষ্ট্য' উন্মোচন করছি যা অপ্রত্যাশিত আচরণের দিকে পরিচালিত করতে পারে, বিশেষত যখন অ্যারেতে অন্য ধরণের অবজেক্ট যেমন স্ট্রিংয়ের মতো জিনিস থাকে তখন আচরণটি আলাদা হয়।
cskwg

3

.Size () পদ্ধতিটি jQuery 1.8 হিসাবে অবচয় করা হয়েছে। পরিবর্তে। দৈর্ঘ্যের সম্পত্তিটি ব্যবহার করুন

দেখুন: https://api.jquery.com/size/


2

আকার ডুপ্লিকেট সনাক্ত করে, এটি অনন্য মানগুলির সংখ্যা প্রদান করবে

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

1

প্রকৃতপক্ষে, .size()খাঁটি জাভাস্ক্রিপ্ট পদ্ধতি নয়, সেট অবজেক্টের এমন একটি অ্যাক্সেসর সম্পত্তি .sizeরয়েছে যা দেখতে দেখতে কিছুটা ভাল লাগে তবে এটি কোনও ফাংশন পদ্ধতি নয়, যেমনটি আমি বলেছিলাম, এটি কোনও অনন্য সংখ্যা দেখানোর জন্য কোনও সেট সামগ্রীর অ্যাক্সেসরের সম্পত্তি property একটি সেট অবজেক্টের (অনন্য) উপাদান।.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

আমরা আপনাকে অ্যারেতে উপাদানগুলির সংখ্যা নির্ধারণ বা প্রদান করতে। দৈর্ঘ্যের সম্পত্তি ব্যবহার করতে পারি । রিটার্ন মান একটি সংখ্যা

> 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) ;`
আমাদের সাইট ব্যবহার করে, আপনি স্বীকার করেছেন যে আপনি আমাদের কুকি নীতি এবং গোপনীয়তা নীতিটি পড়েছেন এবং বুঝতে পেরেছেন ।
Licensed under cc by-sa 3.0 with attribution required.