লুপ ছাড়াই রেকর্ড রাখার সময় অ্যারে থেকে খালি স্ট্রিংগুলি সরাবেন?


90

এই প্রশ্নটি এখানে জিজ্ঞাসা করা হয়েছিল: খালি স্ট্রিংয়ের সাথে সূচকের রেকর্ড রাখার সাথে অ্যারে থেকে খালি স্ট্রিংগুলি সরান

আপনি যদি @ বাজ হিসাবে দেওয়া হয়েছে তা লক্ষ্য করে থাকেন;

"I", "am", "", "still", "here", "", "man"

"এবং এ থেকে আমি নিম্নলিখিত দুটি অ্যারে তৈরি করতে চাই:"

"I", "am", "still", "here", "man"

এই প্রশ্নের সমস্ত উত্তরগুলি লুপিংয়ের একটি ফর্মকে বোঝায়।

আমার প্রশ্ন: কোনও লুপিং ছাড়াই সমস্ত এসস অপসারণের কোন সম্ভাবনা আছে ? ... অ্যারের পুনরুক্তি করা ছাড়াও কি অন্য কোনও বিকল্প আছে?indexempty string

এমন কিছু regexবা কিছু হতে পারে jQueryযা আমরা অবগত নই?

সমস্ত উত্তর বা পরামর্শ অত্যন্ত প্রশংসা করা হয়।

উত্তর:


326
var arr = ["I", "am", "", "still", "here", "", "man"]
// arr = ["I", "am", "", "still", "here", "", "man"]
arr = arr.filter(Boolean)
// arr = ["I", "am", "still", "here", "man"]

filter ডকুমেন্টেশন


// arr = ["I", "am", "", "still", "here", "", "man"]
arr = arr.filter(v=>v!='');
// arr = ["I", "am", "still", "here", "man"]

তীর ফাংশন ডকুমেন্টেশন


4
আপনি ঠিক কেমন অনুভব করছেন তা আমি জানি, আমি কয়েক মাস আগে এটি ব্যবহার করেছি, এতগুলি ছোট সমস্যা সমাধান করেছি
আইজাক

14
@ ডিগোপ্লেন্টজ যারা এখনও আইই 8 চালিয়ে যাচ্ছেন তাদের কেবল অ্যারেতে ফাঁকা অপসারণ করার চেয়ে অনেক বেশি সমস্যা হবে ... আজকাল আমি খুব কমই সেই ব্রাউজারকে সমর্থন করার বিষয়টি বিবেচনা করি
আইজাক

এটি array.filter(!!)বর্তমানে আমরা পেতে পারি এটি সবচেয়ে নিকটতম :)
james_womack

4
এই উত্তরের সমস্ত ক্রেডিট স্ট্যাকওভারফ্লো.com
আইজাক

সম্পর্কিত কিছু ব্যাখ্যা Booleanচমৎকার হবে।
রবসচ


9

অনুগ্রহ করে নোট করুন: নথিটি বলছে:

filterইসিএমএ -262 স্ট্যান্ডার্ডের একটি জাভাস্ক্রিপ্ট এক্সটেনশন; যেমন এটি স্ট্যান্ডার্ডের অন্যান্য বাস্তবায়নে উপস্থিত নাও হতে পারে । আপনি আপনার স্ক্রিপ্টগুলির শুরুতে নীচের কোডটি সন্নিবেশ করে এটির মাধ্যমে কাজ করতে পারেন, ইসিএমএ -২2২ প্রয়োগে ফিল্টার ব্যবহারের অনুমতি দিচ্ছেন যা এটি স্থানীয়ভাবে সমর্থন করে না। এই অ্যালগরিদমটি হ'ল ECMA-262, 5 ম সংস্করণে উল্লিখিত এক হিসাবে ধরে নেওয়া হয়েছে যে fn.call Function.prototype.call এর মূল মানটি মূল্যায়ন করে এবং অ্যারে.প্রোটোটাইপ.পুশ এর মূল মান রয়েছে।

সুতরাং, কিছু হৃদয় ব্যথা এড়াতে আপনার স্ক্রিপ্টে এই কোডটি শুরুতে যুক্ত করতে হতে পারে ।

if (!Array.prototype.filter) {
  Array.prototype.filter = function (fn, context) {
    var i,
        value,
        result = [],
        length;
        if (!this || typeof fn !== 'function' || (fn instanceof RegExp)) {
          throw new TypeError();
        }
        length = this.length;
        for (i = 0; i < length; i++) {
          if (this.hasOwnProperty(i)) {
            value = this[i];
            if (fn.call(context, value, i, this)) {
              result.push(value);
            }
          }
        }
    return result;
  };
}

3
arr = arr.filter(v => v);

প্রত্যাবর্তন হিসাবে অনর্থক সত্যেv রূপান্তরিত হয়


2

যদি jQuery ব্যবহার করা হয়, , grep উপযোগী হতে পারে:


var arr = [ a, b, c, , e, f, , g, h ];

arr = jQuery.grep(arr, function(n){ return (n); });

arr এখন [ a, b, c, d, e, f, g];


4
jquery একটি মেনুয়াল টাস্কের জন্য প্রচুর বালকচিন্তার মতো মনে হচ্ছে
আইজাক

0

অর্থাত আমাদের নীচে কমা, স্পেস বা নিউলাইন দ্বারা পৃথক একাধিক ইমেল ঠিকানা নেওয়া দরকার take

    var emails = EmailText.replace(","," ").replace("\n"," ").replace(" ","").split(" ");
    for(var i in emails)
        emails[i] = emails[i].replace(/(\r\n|\n|\r)/gm,"");

    emails.filter(Boolean);
    console.log(emails);

.replace(" ","").split(" ")"সমস্ত স্থানকে কিছুই না দিয়ে প্রতিস্থাপন করুন, তারপরে প্রতিটি স্পেসে বিভাজন চেষ্টা করুন"
আইজাক

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