javascript - किसी सरणी से सभी मिथ्या मान निकालें




arrays (13)

मैं एक सरणी से सभी मिथ्या मूल्यों को दूर करना चाहूंगा। जावास्क्रिप्ट में मिथ्या मूल्य झूठे, अशक्त, 0, "", अपरिभाषित और NaN हैं।

function bouncer(arr) {
 arr = arr.filter(function (n) { 
    return (n !== undefined && n !== null && n !== false && n !== 0 && n !== "" && isNaN()!=NaN); });
  return arr;
}

bouncer([7, "ate", "", false, 9, NaN], "");

ऊपर NaN परीक्षण मामले को छोड़कर सभी के लिए संतुष्ट हो रहा है। क्या कोई मुझे सरणी में जाँच करने में मदद कर सकता है कि इसमें NaN है या नहीं?


आप गलत तरीके से isNaN() उपयोग करते हैं। यह कुछ इस तरह होना चाहिए:

function bouncer(arr) {
   return arr.filter(function (n) { 
       return n !== undefined && n !== null && n !== false && n !== 0 && n !== "" && !isNaN(n); 
   });

}

इसके अलावा आप इसे फिर से लिख सकते हैं:

function bouncer( arr ){
    return arr.filter( function( value ){
        return value;
    });
}

आप बूलियन का उपयोग कर सकते हैं:

var myFilterArray = myArray.filter(Boolean);

चूंकि आप "झूठे" मूल्यों से छुटकारा पाना चाहते हैं, बस जावास्क्रिप्ट को अपना काम करने दें:

function bouncer(arr) {
  return arr.filter(function(v) { return !!v; });
}

के दोहरे आवेदन ! ऑपरेटर फ़िल्टर कॉलबैक को तब true जब मूल्य " true " और " false " होने पर false हो।

(आपका कोड कॉल कर रहा है isNaN() लेकिन इसे isNaN() नहीं गुजर रहा है; इसीलिए यह परीक्षण आपके काम नहीं आया। isNaN() फ़ंक्शन true यदि इसके पैरामीटर, जब किसी संख्या के लिए coerced किया गया है, तो NaN , और false अन्यथा। )

संपादित करें - ध्यान दें

function bouncer(arr) {
  return arr.filter(Boolean);
}

एक अन्य उत्तर में भी लोरमीपसुम नोट्स के रूप में काम करेगा, क्योंकि बिल-इन बूलियन कंस्ट्रक्टर बहुत ही सटीक काम करता है !!


दर्ज करना चाल को अच्छी तरह से कर सकता है, एक _.compact() फ़ंक्शन है।

const arr = [7, "ate", "", false, 9, NaN];
console.log(_.compact(arr));
<script src="https://cdnjs.cloudflare.com/ajax/libs/lodash.js/4.17.11/lodash.js"></script>


फ़िल्टर का उपयोग करके हम लिख सकते हैं

function bouncer(arr) {
 return arr.filter(item => item);
}
bouncer([false, null, 0, NaN, undefined, ""]) // will return [].

बाउंसर समारोह:

function bouncer(arr) {
  return arr.filter((val) => {
    return !!val;
  });
}

console.log(bouncer([7, "ate", "", false, 9]));


मुझे लगता है कि इस तरह से बेहतर सौदा होगा

   function bouncer(arr) {
        arr = arr.filter(function(item) {
            return item;
        return arr;

    bouncer([7, "ate", "", false, 9, NaN, undefined, 0]);

यह एक और समकक्ष है, लेकिन उदाहरण के लिए, समाधान:

function bouncer( arr ){
    return arr.filter( function( value ){
        return value ? true : false;
    });
}

यह कोड नमूना दृष्टव्य है क्योंकि यह एक पाठक को इंगित करता है कि चर value को true या false रूप में मूल्यांकन किया जाएगा, और अनाम फ़ंक्शन value के मूल्यांकन के लिए मैपिंग, या तो true या false वापस आ जाएगा।

किसी ऐसे व्यक्ति के लिए जो अपनी सत्यता के आधार पर किसी सरणी से मानों को हटाने के इस दृष्टिकोण से परिचित नहीं है, या किसी ऐसे व्यक्ति के लिए जो filter फ़ंक्शन से परिचित नहीं है (या प्रलेखन को नहीं पढ़ा है), यह उदाहरण सबसे संक्षिप्त है जो अभी भी बताता है filter फ़ंक्शन का व्यवहार।

बेशक, आपके आवेदन में आप अधिक संक्षिप्त, अभी तक कम व्यावहारिक, कार्यान्वयन के लिए विकल्प चुन सकते हैं:

function bouncer( arr ){
    return arr.filter( function( value ){
        return value;
    });
}

यह वही होना चाहिए जो आप देख रहे हैं:

let array = [7, 'ate', '', false, 9, NaN];

function removeFalsyItems(array) {
   // Your result
   let filter = array.filter(Boolean);

   // Empty the array
   array.splice(0, array.length);

   // Push all items from the result to our array
   Array.prototype.push.apply(array, filter);

   return array
}

removeFalsyItems(array) // => [7, 'ate', 9], funny joke btw...

function bouncer(arr) {

    function filterFalse(value) {
        var a = Boolean(value);
        if (a === true) {
            return a;
        }
        return a;
    }

    function filterArray(x) {
        var y = filterFalse(x);
        if (y) {
            return true;
        } else {
            return false;
        }
    }

    var newArr = arr.filter(filterArray);
    return newArr;
}

bouncer([1, null, NaN, 2, undefined]);

function bouncer(arr) {  
  var result = []; 
   for (var i = 0; i < arr.length; i++) {
     if (arr[i]) {
      result.push(arr[i]);
     }
   }
  return result;
 }

 bouncer([7, "ate", "", false, 9]);

function falsy(value) {
      if (value) {
        return value;
      }
    }

    function bouncer(arr) {
      var filter = arr.filter(falsy);
      return filter;
    }

    bouncer([7, "ate", "", false, 9]);

truthyArray = arr.filter(el => el)

^ आप इसे कैसे करते हैं







arrays