অ্যারে খালি বা নাল কিনা তা পরীক্ষা করুন


106

আমি জানতে চাই কীভাবে jQuery এ কোন অ্যারে খালি বা নাল আছে তা পরীক্ষা করতে হবে। আমি চেষ্টা করেছি array.length === 0কিন্তু কাজ হয়নি। এটি কোনও ত্রুটিও ফেলেনি।

এই কোড:

var album_text = new Array();

$("input[name='album_text[]']").each(function(){
  if( $(this).val() &&  $(this).val() != '') {
    album_text.push($(this).val());
  }
});
if (album_text.length === 0) {
  $('#error_message').html("Error");
}

else {
  // send data
}

2
"সাধারণ জাভাস্ক্রিপ্ট" এর মতোই: স্ট্যাকওভারফ্লো
জুলিয়েন

1
@ জুলিয়েন, আমি এই থ্রেডটি শুরু করার আগে সেই থ্রেডে তালিকাভুক্ত সমস্ত সমাধানের চেষ্টা করেছি। তাদের কেউ কোনওভাবেই কাজ করেননি।
ইনপুট

প্রসঙ্গে আমরা কি আরও কিছু কোড পেতে পারি? চারপাশে জাভাস্ক্রিপ্ট, এইচটিএমএল? আপনি কি নিশ্চিত যে $("input[name='album_text[]']")প্রকৃতপক্ষে উপাদানগুলি ফিরে আসছে?
জন অ্যাডামস

@ জুলিয়েনশ্মিট: আপনি যে প্রশ্নটির সাথে লিঙ্ক করেছেন সেটি হ'ল অ্যারের মানটি পুরো অ্যারে নয়, তা খালি কিনা তা যাচাইয়ের বিষয়ে ।
ড্যান ড্যাসক্লেস্কু

উত্তর:


168

যতক্ষণ আপনার নির্বাচক প্রকৃতপক্ষে কাজ করছেন ততক্ষণ আমি আপনার কোডের সাথে কোনও ভুল দেখছি না যা অ্যারের দৈর্ঘ্য পরীক্ষা করে। আপনার যা ইচ্ছা তা করা উচিত। আপনার কোডটি আরও সহজ এবং আরও পঠনযোগ্য করার জন্য পরিষ্কার করার অনেক উপায় রয়েছে। আমি কী পরিষ্কার করেছিলাম সে সম্পর্কে নোট সহ একটি ক্লিন আপ সংস্করণ এখানে।

var album_text = [];

$("input[name='album_text[]']").each(function() {
    var value = $(this).val();
    if (value) {
        album_text.push(value);
    }
});
if (album_text.length === 0) {
    $('#error_message').html("Error");
}

else {
  //send data
}

আপনি কী করছেন এবং আমি কী পরিবর্তন করেছি সে সম্পর্কে কিছু নোট।

  1. $(this)সর্বদা একটি বৈধ jQuery অবজেক্ট তাই কখনও চেক করার কোনও কারণ নেই if ($(this))। এটির অভ্যন্তরে কোনও ডিওএম অবজেক্ট নাও থাকতে পারে $(this).lengthতবে আপনার প্রয়োজনের সাথে এটি পরীক্ষা করতে পারেন তবে এটি এখানে প্রয়োজনীয় নয় কারণ .each()লুপের $(this)ভিতরে কোনও আইটেম না থাকলে লুপটি চলত না কারণ .each()সর্বদা কিছু হবে।
  2. এটি একই ফাংশনে একাধিকবার $ (এটি) ব্যবহারে অক্ষম। এটি একবার স্থানীয় ভেরিয়েবলে পাওয়ার জন্য আরও ভাল এবং সেই স্থানীয় ভেরিয়েবল থেকে এটি ব্যবহার করুন।
  3. এটা দিয়ে অ্যারে আরম্ভ করতে সুপারিশ করা হচ্ছে []বদলে new Array()
  4. if (value)যখন মান একটি স্ট্রিং থেকে হবে উভয় রক্ষা হবে বলে আশা করা হয় value == null, value == undefinedএবং value == ""তাই আপনাকে যা করতে হবে না if (value && (value != ""))। আপনি কেবল পারেন: if (value)তিনটি খালি শর্তের জন্য পরীক্ষা করতে।
  5. if (album_text.length === 0) অ্যারেটি বৈধ, আরম্ভিকৃত অ্যারে (যা এটি এখানে রয়েছে) যতক্ষণ না খালি তা আপনাকে বলবে।

আপনি এই নির্বাচকটির সাথে কী করার চেষ্টা করছেন $("input[name='album_text[]']")?


5
@MaciekSemik - দেখুন stackoverflow.com/questions/359494/... । আমি সর্বদা কঠোর সমতা ব্যবহার করি ( ===) যদি না আমি নির্দিষ্টভাবে কোনও ধরণের রূপান্তরকে অনুমতি দিতে চাই। এটি aোকা একটি ভাল অভ্যাস।
jender00

73

অ্যারে উপাদান রয়েছে কি না তা যাচাই করার জন্য ব্যবহারকারী জিকুয়ারিটি খালিঅবজেক্ট।

var testArray=[1,2,3,4,5];
var testArray1=[];
console.log(jQuery.isEmptyObject(testArray)); //false
console.log(jQuery.isEmptyObject(testArray1)); //true

2
দৈর্ঘ্য যাচাইয়ের চেয়ে অনেক বেশি নির্ভরযোগ্য, বিশেষত যদি আপনার ভেরিয়েবলটিও কোনও বস্তু হতে পারে (বস্তুগুলির সাথে দৈর্ঘ্য খালি কিনা তা পরীক্ষা করতে কাজ করে না)।
চমত্কার

এটি আমার মতে আরও উপযুক্ত উত্তর।
earl3s

4
isEmptyObjectপ্রসারিত falseথাকলে সর্বদা ফিরে আসে Array.prototype, যেমন Array.prototype.someFunction = function () {};- অ্যারে খালি থাকলেও। নোট করুন যে কিছু ফ্রেমওয়ার্ক (যেমন Ember.js) ডিফল্টরূপে অ্যারে প্রোটোটাইপ প্রসারিত করে।
জেসেনকো

4
সাবধান isEmptyObject! JQuery 1.8.3 jQuery.isEmptyObject([])রিটার্নের জন্য false, তবে jQuery 1.11.3 এর জন্য এটি ফিরে আসে true। প্রকৃতপক্ষে, jQuery ডকুমেন্টেশন বলে যে অন্যান্য ধরণের অবজেক্টের (ডিওএম উপাদান, আদিম স্ট্রিং / সংখ্যা, হোস্ট অবজেক্ট) ব্রাউজারগুলিতে সামঞ্জস্যপূর্ণ ফলাফল না দিতে পারে তর্কটি সর্বদা একটি সরল জাভাস্ক্রিপ্ট অবজেক্ট হওয়া উচিত। দুঃখিত, @ rhinoxi এর উত্তর দেখেনি।
দিমিত্রি ভারশিনিন

8

''আপনার অ্যারেতে প্রবেশ করার আগে আপনার (খালি স্ট্রিং) চেক করা উচিত । আপনার অ্যারেতে এমন উপাদান রয়েছে যা খালি স্ট্রিং। তাহলে আপনার album_text.length === 0কাজ ঠিক আছে।


আপডেট হওয়া কোডটি দেখুন। আমি এই কোডটি যুক্ত করেছি if( $(this).val() && $(this).val() != '') এখনও এটি কাজ করে না।
ইনপুট

8

@ জেসেনকো উল্লিখিত হিসাবে অ্যারেটি খালি কিনা তা পরীক্ষা করতে jquery থেকে $ .ImptyObject ব্যবহার করা বিপজ্জনক বলে আমি মনে করি। আমি সবেমাত্র এই সমস্যাটি পূরণ করেছি।

ইন isEmptyObject ডক , এটা উল্লেখ:

যুক্তিটি সর্বদা একটি সরল জাভাস্ক্রিপ্ট অবজেক্ট হওয়া উচিত

যা আপনি দ্বারা নির্ধারণ করতে পারেন $.isPlainObject। প্রত্যাবর্তন $.isPlainObject([])মিথ্যা।

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